By: Jasmine Tzou
%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
from datetime import datetime
from sklearn.model_selection import train_test_split
from sklearn.impute import KNNImputer
# Importing Classifier Modules
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVC, LinearSVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import Perceptron
from sklearn.linear_model import SGDClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import GridSearchCV
#to be abole to view all columns and rows
pd.set_option("display.max_columns", None)
pd.set_option("display.max_rows", None)
import warnings
warnings.filterwarnings("ignore")
df=pd.read_csv('Data for Cleaning & Modeling.csv',low_memory=False)
df.head(5)
| X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | X9 | X10 | X11 | X12 | X13 | X14 | X15 | X16 | X17 | X18 | X19 | X20 | X21 | X22 | X23 | X24 | X25 | X26 | X27 | X28 | X29 | X30 | X31 | X32 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 11.89% | 54734.0 | 80364.0 | $25,000 | $25,000 | $19,080 | 36 months | B | B4 | NaN | < 1 year | RENT | 85000.0 | VERIFIED - income | Aug-09 | Due to a lack of personal finance education an... | debt_consolidation | Debt consolidation for on-time payer | 941xx | CA | 19.48 | 0.0 | Feb-94 | 0.0 | NaN | NaN | 10.0 | 0.0 | 28854.0 | 52.10% | 42.0 | f |
| 1 | 10.71% | 55742.0 | 114426.0 | $7,000 | $7,000 | $673 | 36 months | B | B5 | CNN | < 1 year | RENT | 65000.0 | not verified | May-08 | Just want to pay off the last bit of credit ca... | credit_card | Credit Card payoff | 112xx | NY | 14.29 | 0.0 | Oct-00 | 0.0 | NaN | NaN | 7.0 | 0.0 | 33623.0 | 76.70% | 7.0 | f |
| 2 | 16.99% | 57167.0 | 137225.0 | $25,000 | $25,000 | $24,725 | 36 months | D | D3 | Web Programmer | 1 year | RENT | 70000.0 | VERIFIED - income | Aug-14 | Trying to pay a friend back for apartment brok... | debt_consolidation | mlue | 100xx | NY | 10.50 | 0.0 | Jun-00 | 0.0 | 41.0 | NaN | 10.0 | 0.0 | 19878.0 | 66.30% | 17.0 | f |
| 3 | 13.11% | 57245.0 | 138150.0 | $1,200 | $1,200 | $1,200 | 36 months | C | C2 | city of beaumont texas | 10+ years | OWN | 54000.0 | not verified | Mar-10 | If funded, I would use this loan consolidate t... | debt_consolidation | zxcvb | 777xx | TX | 5.47 | 0.0 | Jan-85 | 0.0 | 64.0 | NaN | 5.0 | 0.0 | 2584.0 | 40.40% | 31.0 | f |
| 4 | 13.57% | 57416.0 | 139635.0 | $10,800 | $10,800 | $10,692 | 36 months | C | C3 | State Farm Insurance | 6 years | RENT | 32000.0 | not verified | Nov-09 | I currently have a personal loan with Citifina... | debt_consolidation | Nicolechr1978 | 067xx | CT | 11.63 | 0.0 | Dec-96 | 1.0 | 58.0 | NaN | 14.0 | 0.0 | 3511.0 | 25.60% | 40.0 | f |
Change the column name, so that it will be more easy to see
df.columns = ['Interest_Rate', 'loanID', 'borID', 'Loan_Requested', 'Loan_Funded', 'Investor_portion', \
'Number_of_Payments', 'Loan_Grade','loanSGrade','job', 'Years_Employed', 'Home_Ownership',\
'Annual_Income', 'Verification', 'Issued_MonYY','reason_Loan', 'loan_Cat','loanTitle', 'zip_3',\
'State', 'Debit_Payment_Ratio', 'Delinquency_Frequency','Credit_Earliest_MonYY','Inquiries_Count',\
'Delinquency_Recency', 'Public_Record_Recency','Open_Credit_Line_Count', 'Derogatory_Public_Record_Count',\
'Total_Credit','Credit_Utilization_Rate','Total_Credit_Line_Count','Initial_Status']
df.head(5)
| Interest_Rate | loanID | borID | Loan_Requested | Loan_Funded | Investor_portion | Number_of_Payments | Loan_Grade | loanSGrade | job | Years_Employed | Home_Ownership | Annual_Income | Verification | Issued_MonYY | reason_Loan | loan_Cat | loanTitle | zip_3 | State | Debit_Payment_Ratio | Delinquency_Frequency | Credit_Earliest_MonYY | Inquiries_Count | Delinquency_Recency | Public_Record_Recency | Open_Credit_Line_Count | Derogatory_Public_Record_Count | Total_Credit | Credit_Utilization_Rate | Total_Credit_Line_Count | Initial_Status | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 11.89% | 54734.0 | 80364.0 | $25,000 | $25,000 | $19,080 | 36 months | B | B4 | NaN | < 1 year | RENT | 85000.0 | VERIFIED - income | Aug-09 | Due to a lack of personal finance education an... | debt_consolidation | Debt consolidation for on-time payer | 941xx | CA | 19.48 | 0.0 | Feb-94 | 0.0 | NaN | NaN | 10.0 | 0.0 | 28854.0 | 52.10% | 42.0 | f |
| 1 | 10.71% | 55742.0 | 114426.0 | $7,000 | $7,000 | $673 | 36 months | B | B5 | CNN | < 1 year | RENT | 65000.0 | not verified | May-08 | Just want to pay off the last bit of credit ca... | credit_card | Credit Card payoff | 112xx | NY | 14.29 | 0.0 | Oct-00 | 0.0 | NaN | NaN | 7.0 | 0.0 | 33623.0 | 76.70% | 7.0 | f |
| 2 | 16.99% | 57167.0 | 137225.0 | $25,000 | $25,000 | $24,725 | 36 months | D | D3 | Web Programmer | 1 year | RENT | 70000.0 | VERIFIED - income | Aug-14 | Trying to pay a friend back for apartment brok... | debt_consolidation | mlue | 100xx | NY | 10.50 | 0.0 | Jun-00 | 0.0 | 41.0 | NaN | 10.0 | 0.0 | 19878.0 | 66.30% | 17.0 | f |
| 3 | 13.11% | 57245.0 | 138150.0 | $1,200 | $1,200 | $1,200 | 36 months | C | C2 | city of beaumont texas | 10+ years | OWN | 54000.0 | not verified | Mar-10 | If funded, I would use this loan consolidate t... | debt_consolidation | zxcvb | 777xx | TX | 5.47 | 0.0 | Jan-85 | 0.0 | 64.0 | NaN | 5.0 | 0.0 | 2584.0 | 40.40% | 31.0 | f |
| 4 | 13.57% | 57416.0 | 139635.0 | $10,800 | $10,800 | $10,692 | 36 months | C | C3 | State Farm Insurance | 6 years | RENT | 32000.0 | not verified | Nov-09 | I currently have a personal loan with Citifina... | debt_consolidation | Nicolechr1978 | 067xx | CT | 11.63 | 0.0 | Dec-96 | 1.0 | 58.0 | NaN | 14.0 | 0.0 | 3511.0 | 25.60% | 40.0 | f |
df.shape
(400000, 32)
From the chart below, that there's a lot of missing value. Theoretically, 25% to 30% is the maximum missing values are allowed, beyond which we might want to drop the variable unless that variable is significant to the target variable.
na_count=df.isna().sum()
df_na = pd.DataFrame(na_count)
df_na['NA_count'] = df_na
df_na['NA_%'] = (df_na['NA_count'] / df.shape[0])*100
df_na = df_na.iloc[:,1:3]
df_na
| NA_count | NA_% | |
|---|---|---|
| Interest_Rate | 61010 | 15.25250 |
| loanID | 1 | 0.00025 |
| borID | 1 | 0.00025 |
| Loan_Requested | 1 | 0.00025 |
| Loan_Funded | 1 | 0.00025 |
| Investor_portion | 1 | 0.00025 |
| Number_of_Payments | 1 | 0.00025 |
| Loan_Grade | 61270 | 15.31750 |
| loanSGrade | 61270 | 15.31750 |
| job | 23986 | 5.99650 |
| Years_Employed | 17538 | 4.38450 |
| Home_Ownership | 61361 | 15.34025 |
| Annual_Income | 61028 | 15.25700 |
| Verification | 1 | 0.00025 |
| Issued_MonYY | 1 | 0.00025 |
| reason_Loan | 276440 | 69.11000 |
| loan_Cat | 1 | 0.00025 |
| loanTitle | 19 | 0.00475 |
| zip_3 | 1 | 0.00025 |
| State | 1 | 0.00025 |
| Debit_Payment_Ratio | 1 | 0.00025 |
| Delinquency_Frequency | 1 | 0.00025 |
| Credit_Earliest_MonYY | 1 | 0.00025 |
| Inquiries_Count | 1 | 0.00025 |
| Delinquency_Recency | 218802 | 54.70050 |
| Public_Record_Recency | 348845 | 87.21125 |
| Open_Credit_Line_Count | 1 | 0.00025 |
| Derogatory_Public_Record_Count | 1 | 0.00025 |
| Total_Credit | 1 | 0.00025 |
| Credit_Utilization_Rate | 267 | 0.06675 |
| Total_Credit_Line_Count | 1 | 0.00025 |
| Initial_Status | 1 | 0.00025 |
There is 1 row that has no value, except Interest_Rate, will drop the row
df[df.Loan_Requested.isnull()]
| Interest_Rate | loanID | borID | Loan_Requested | Loan_Funded | Investor_portion | Number_of_Payments | Loan_Grade | loanSGrade | job | Years_Employed | Home_Ownership | Annual_Income | Verification | Issued_MonYY | reason_Loan | loan_Cat | loanTitle | zip_3 | State | Debit_Payment_Ratio | Delinquency_Frequency | Credit_Earliest_MonYY | Inquiries_Count | Delinquency_Recency | Public_Record_Recency | Open_Credit_Line_Count | Derogatory_Public_Record_Count | Total_Credit | Credit_Utilization_Rate | Total_Credit_Line_Count | Initial_Status | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 364111 | 7.69% | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
df = df.dropna(subset = ['Loan_Requested'],axis =0)
df=df.dropna(subset=['Interest_Rate'],axis=0)
df=df.drop(columns = ['reason_Loan', 'loanTitle','Delinquency_Recency', 'Public_Record_Recency'])
print("Loan_garde count:"+str(len(df.Loan_Grade.value_counts())))
print("Loan_subgarde count:"+str(len(df.loanSGrade.value_counts())))
Loan_garde count:7 Loan_subgarde count:35
df=df.drop(columns = ['loanID', 'borID','loanSGrade','zip_3'])
df=df.drop(columns = ['job'])
df.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 338989 entries, 0 to 399999 Data columns (total 23 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Interest_Rate 338989 non-null object 1 Loan_Requested 338989 non-null object 2 Loan_Funded 338989 non-null object 3 Investor_portion 338989 non-null object 4 Number_of_Payments 338989 non-null object 5 Loan_Grade 287123 non-null object 6 Years_Employed 324195 non-null object 7 Home_Ownership 287030 non-null object 8 Annual_Income 287238 non-null float64 9 Verification 338989 non-null object 10 Issued_MonYY 338989 non-null object 11 loan_Cat 338989 non-null object 12 State 338989 non-null object 13 Debit_Payment_Ratio 338989 non-null float64 14 Delinquency_Frequency 338989 non-null float64 15 Credit_Earliest_MonYY 338989 non-null object 16 Inquiries_Count 338989 non-null float64 17 Open_Credit_Line_Count 338989 non-null float64 18 Derogatory_Public_Record_Count 338989 non-null float64 19 Total_Credit 338989 non-null float64 20 Credit_Utilization_Rate 338765 non-null object 21 Total_Credit_Line_Count 338989 non-null float64 22 Initial_Status 338989 non-null object dtypes: float64(8), object(15) memory usage: 62.1+ MB
#Interest Rate on the loan
df['Interest_Rate'] =df['Interest_Rate'].str.replace("%","")
df['Interest_Rate'] = df['Interest_Rate'].astype(float)
#df.Interest_Rate = df.Interest_Rate.replace('(%)','', regex = True).astype(float)
sns.distplot(df['Interest_Rate'])
plt.title("Distribution of Interest Rate")
plt.xlabel("Interest Rate in %")
plt.ylabel("Occurance in %")
plt.show()
From the above plot, we can see that the interest rate has the majority in 15%, and range from around 5% to 27%.
df.Loan_Requested = df.Loan_Requested.replace('[\$\,]','', regex = True).astype(int)
df.Loan_Funded = df.Loan_Funded.replace('[\$\,]','', regex = True).astype(int)
df.Investor_portion = df.Investor_portion.replace('[\$\,]','', regex = True).astype(int)
#loan_requested
print(df['Loan_Requested'].describe())
sns.distplot(df[df['Loan_Requested'].notnull()]['Loan_Requested'])
count 338989.000000 mean 14276.968353 std 8252.264104 min 500.000000 25% 8000.000000 50% 12000.000000 75% 20000.000000 max 35000.000000 Name: Loan_Requested, dtype: float64
<AxesSubplot:xlabel='Loan_Requested', ylabel='Density'>
#loan_funded
print(df['Loan_Funded'].describe())
sns.distplot(df[df['Loan_Funded'].notnull()]['Loan_Funded'])
count 338989.000000 mean 14248.306140 std 8238.064335 min 500.000000 25% 8000.000000 50% 12000.000000 75% 20000.000000 max 35000.000000 Name: Loan_Funded, dtype: float64
<AxesSubplot:xlabel='Loan_Funded', ylabel='Density'>
#investor_portion
print(df['Investor_portion'].describe())
sns.distplot(df[df['Investor_portion'].notnull()]['Investor_portion'])
count 338989.000000 mean 14182.000445 std 8255.138412 min 0.000000 25% 8000.000000 50% 12000.000000 75% 19900.000000 max 35000.000000 Name: Investor_portion, dtype: float64
<AxesSubplot:xlabel='Investor_portion', ylabel='Density'>
From the above analysis and plots, we can see that Loan_Requested, Loan_Funded, Investor_portion has similar distribution, will further do the correlation plot, to see whether they are highly correlated.
cor=df.iloc[:,0:4]
heatmap = sns.heatmap(cor.corr(), vmin=-1, vmax=1, annot=True)
heatmap.set_title('Correlation Heatmap', fontdict={'fontsize':12}, pad=12);
We can see that there's high correlation (nearly one to one) with the loan_requested, Investor_potion, and loan funded. Therefore, we'll just leave 'loan_requested', since putting them will add dimensionality but do not provide that much extra information.
df=df.drop(['Loan_Funded','Investor_portion'],axis=1)
sns.distplot(df['Loan_Requested'])
plt.title("Distribution and Skew of Loan_Requested")
plt.xlabel("Interest Rate in %")
plt.show()
df['Number_of_Payments'].value_counts()
36 months 247791 60 months 91198 Name: Number_of_Payments, dtype: int64
#create a category variable, based on Number_of_Payments
df['pay_36months'] = df['Number_of_Payments'].apply(lambda x: 1 if x == '36 months' else 0)
df = df.drop('Number_of_Payments', axis=1)
#df['Loan_Grade'].value_counts()
ax = sns.countplot(x=df['Loan_Grade'],order=df['Loan_Grade'].value_counts(ascending=False).index)
abs_values = df['Loan_Grade'].value_counts(ascending=False).values
ax.bar_label(container=ax.containers[0])
plt.show()
since there're 61,270 (about 15%) of missing value in the Loan grade, will create a new category as "others" to inpute the missing values, rather than interpolate them.
df["Loan_Grade"] = df["Loan_Grade"].fillna('Others').astype("category")
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Loan_Grade'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
<seaborn.axisgrid.PairGrid at 0x7f7c84205040>
From the above plot, we can see that loan grades has high correlation with interest rate.
sns.set(rc={"figure.figsize":(10,6)})
sns.histplot(df[df["Years_Employed"].notnull()]["Years_Employed"])
plt.show()
df["Years_Employed"].describe()
count 324195 unique 11 top 10+ years freq 108491 Name: Years_Employed, dtype: object
#clean the data form and
df['Years_Employed']= df['Years_Employed'].str.replace('years','').str.replace('year','').str.replace('+','')
df['Years_Employed']= df['Years_Employed'].str.replace('< 1','0')
df['Years_Employed']= df['Years_Employed'].astype('float')
#plot the years employeed and interest rate
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Years_Employed'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
<seaborn.axisgrid.PairGrid at 0x7f7c8890f850>
Since there's about 4% of missing value in Years_Employeed, will use interpolate to fill in the missing value
df['Years_Employed']=df['Years_Employed'].interpolate()
Since the 10 represent the years employeed from 10 years to more, will change to category so that each category means a range.
new=['0-4','5-9','10']
df['Years_Employed']= [new[int(x)//5] if x!='Other' else 'Other' for x in df['Years_Employed']]
print(df['Years_Employed'].value_counts())
print(df.groupby('Years_Employed')[['Years_Employed','Interest_Rate']].mean())
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Years_Employed'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
0-4 128696
10 110301
5-9 99992
Name: Years_Employed, dtype: int64
Interest_Rate
Years_Employed
0-4 13.744290
10 14.143337
5-9 13.988912
<seaborn.axisgrid.PairGrid at 0x7f7c87b75d90>
df['Home_Ownership'].value_counts()
MORTGAGE 145958 RENT 115958 OWN 24976 OTHER 107 NONE 30 ANY 1 Name: Home_Ownership, dtype: int64
df['Home_Ownership']=df['Home_Ownership'].str.replace('NONE','OTHER').str.replace('ANY','OTHER')
df['Home_Ownership']=df['Home_Ownership'].fillna("OTHER")
df['Home_Ownership'] = df['Home_Ownership'].astype("category")
df['Home_Ownership'].value_counts()
MORTGAGE 145958 RENT 115958 OTHER 52097 OWN 24976 Name: Home_Ownership, dtype: int64
sns.countplot(x='Home_Ownership',data=df)
<AxesSubplot:xlabel='Home_Ownership', ylabel='count'>
From the above plot, we can see that mortgage is the majority.
df.groupby('Home_Ownership')[['Home_Ownership','Interest_Rate']].mean()
| Interest_Rate | |
|---|---|
| Home_Ownership | |
| MORTGAGE | 13.662988 |
| OTHER | 13.985585 |
| OWN | 14.092569 |
| RENT | 14.253723 |
df.shape
(338989, 21)
df['Annual_Income'].describe()
count 2.872380e+05 mean 7.315146e+04 std 5.618967e+04 min 3.000000e+03 25% 4.500000e+04 50% 6.300000e+04 75% 8.807875e+04 max 7.500000e+06 Name: Annual_Income, dtype: float64
sns.distplot(df[df['Annual_Income'].notnull()]['Annual_Income'])
<AxesSubplot:xlabel='Annual_Income', ylabel='Density'>
fig = px.box(df, x="Annual_Income")
fig.show()
From the plots above, we can see that there's a few annual income is really high, and since they're 61,028 missing values, in order to not affect too much by these outlier, will remove them which is higher than upper fence($1,526,060), in order to fill in the NAs.
print(len(df[df.Annual_Income>1526060]))
15
#only select which is smaller than 1526060
df= df.loc[~(df['Annual_Income']>1526060)]
df.shape
(338974, 21)
#input na value with interpolate, since it will input value with the nearest distance
df.Annual_Income=df.Annual_Income.interpolate()
df.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 338974 entries, 0 to 399999 Data columns (total 21 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Interest_Rate 338974 non-null float64 1 Loan_Requested 338974 non-null int64 2 Loan_Grade 338974 non-null category 3 Years_Employed 338974 non-null object 4 Home_Ownership 338974 non-null category 5 Annual_Income 338974 non-null float64 6 Verification 338974 non-null object 7 Issued_MonYY 338974 non-null object 8 loan_Cat 338974 non-null object 9 State 338974 non-null object 10 Debit_Payment_Ratio 338974 non-null float64 11 Delinquency_Frequency 338974 non-null float64 12 Credit_Earliest_MonYY 338974 non-null object 13 Inquiries_Count 338974 non-null float64 14 Open_Credit_Line_Count 338974 non-null float64 15 Derogatory_Public_Record_Count 338974 non-null float64 16 Total_Credit 338974 non-null float64 17 Credit_Utilization_Rate 338750 non-null object 18 Total_Credit_Line_Count 338974 non-null float64 19 Initial_Status 338974 non-null object 20 pay_36months 338974 non-null int64 dtypes: category(2), float64(9), int64(2), object(8) memory usage: 52.4+ MB
Check the distribution, after removing outlier and input the missing value
sns.distplot(df['Annual_Income'])
<AxesSubplot:xlabel='Annual_Income', ylabel='Density'>
df.shape
(338974, 21)
originally want to use KNN methods to input the NAs, but due to computing limitation can not reach, will put code below for reference
#KNN to fill NAs
#https://medium.com/@kyawsawhtoon/a-guide-to-knn-imputation-95e2dc496e
#from sklearn.preprocessing import MinMaxScaler
#scaler = MinMaxScaler()
#df = pd.DataFrame(scaler.fit_transform(df), columns = df.columns)
#df.head()
#from sklearn.impute import KNNImputer
#imputer = KNNImputer(n_neighbors=5)
#df1 = pd.DataFrame(imputer.fit_transform(df1),columns = df1.Annual_Income)
df['Verification'].value_counts()
df['Verification'] = df['Verification'].astype("category")
df['Verification'].value_counts()
VERIFIED - income 127036 not verified 107868 VERIFIED - income source 104070 Name: Verification, dtype: int64
Since VERIFIED - income and VERIFIED - income source are both menaing they are verified, will combine them to new category "verified"
df["Verification"] = df["Verification"].str.replace("VERIFIED - income", "verified").str.replace("verified source","verified")
df['Verification'].value_counts()
verified 231106 not verified 107868 Name: Verification, dtype: int64
sns.set(style="whitegrid")
i = sns.PairGrid(df, x_vars = ['Verification'], y_vars = 'Interest_Rate', size = 5)
i.map(sns.pointplot, color = sns.xkcd_rgb['red'])
i.fig.set_size_inches(7,5)
i.set(ylim = (5,26));
# issued_date
df['issued_month'] = df['Issued_MonYY'].apply(lambda x: str(x)[:3])
df['issued_year'] = df['Issued_MonYY'].apply(lambda x: str(x)[-2:])
# credit_earliest date
df['credit_earliest_month'] = df['Credit_Earliest_MonYY'].apply(lambda x: str(x)[:3])
df['credit_earliest_year'] = df['Credit_Earliest_MonYY'].apply(lambda x: str(x)[-2:])
df = df.drop(['Issued_MonYY', 'Credit_Earliest_MonYY' ], axis=1)
df['issued_month'].unique()
array(['Aug', 'May', 'Mar', 'Nov', 'Apr', 'Sep', 'Feb', 'Dec', 'Jun',
'Oct', 'Jul', 'Jan'], dtype=object)
df['issued_year'].unique()
array(['09', '08', '14', '10', '12', '07', '11', '13'], dtype=object)
df['credit_earliest_month'].unique()
array(['Feb', 'Oct', 'Jun', 'Jan', 'Dec', 'Apr', 'Nov', 'Jul', 'May',
'Aug', 'Sep', 'Mar'], dtype=object)
df['credit_earliest_year'].unique()
array(['94', '00', '85', '96', '98', '93', '01', '06', '95', '97', '90',
'91', '03', '05', '75', '02', '88', '86', '87', '92', '89', '99',
'04', '83', '80', '84', '71', '63', '81', '76', '82', '79', '72',
'78', '73', '77', '74', '69', '70', '68', '67', '64', '07', '61',
'62', '66', '65', '54', '08', '50', '46', '59', '56', '09', '58',
'60', '10', '55', '53', '57', '11', '44', '51', '49'], dtype=object)
# Define month convertion function
def month(x):
months = {
"jan": 1,
"feb": 2,
"mar": 3,
"apr": 4,
"may": 5,
"jun": 6,
"jul": 7,
"aug": 8,
"sep": 9,
"oct": 10,
"nov": 11,
"dec": 12,
}
try: # convert all the month into lowercase to match them to numbers
x = months[x.strip()[:3].lower()]
return x
except:
pass
# Define year convertion function
# Since it's only 2023 now, I assume that last 2 digits greater than 30 is in 1900 century
# for last 2 digits less than 30, I assume that it's in 2000 century
def year(x):
x = x.strip()[-2:]
try:
if float(x) > 30:
x = "19" + str(x)
else: #
x = "20" + str(x)
return int(x)
except:
pass
# change issued_date & credit_earliest_date's Month & Year
df['issued_month'] = df['issued_month'].apply(lambda x: month(x))
df['credit_earliest_month'] = df['credit_earliest_month'] .apply(lambda x: month(x))
df['issued_year'] = df['issued_year'].apply(lambda x: year(x))
df['credit_earliest_year'] = df['credit_earliest_year'].apply(lambda x: year(x))
countplt, ax = plt.subplots(figsize = (10,7))
ax = sns.countplot(x='issued_month',
data=df,
order = df['issued_month'].value_counts().index)
From the above plot, we can see that July has the most issued loan cases.
countplt, ax = plt.subplots(figsize = (10,7))
ax = sns.countplot(x='issued_year',
data=df,
order = df['issued_year'].value_counts().index)
From the above plot, we can see that 2014 has the most issued loan cases.
countplt, ax = plt.subplots(figsize = (10,7))
ax = sns.countplot(x='credit_earliest_month',
data=df,
order = df['credit_earliest_month'].value_counts().index)
countplt, ax = plt.subplots(figsize = (10,7))
ax = sns.countplot(x='credit_earliest_year',
data=df,
order = df['credit_earliest_year'].value_counts().index[:10])
df['Initial_Status'].value_counts()
f 232588 w 106386 Name: Initial_Status, dtype: int64
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Initial_Status'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
<seaborn.axisgrid.PairGrid at 0x7f7ca4a50e80>
df['loan_Cat'].value_counts()
#punc = ['major_purchase','small_business','car','medical','moving','wedding','vacation',]
#for i in punc:
# a = [x.replace(i,'') for x in a]
debt_consolidation 198217 credit_card 75678 home_improvement 19622 other 17154 major_purchase 7312 small_business 5359 car 4115 medical 3328 moving 2138 wedding 1934 vacation 1848 house 1723 educational 279 renewable_energy 267 Name: loan_Cat, dtype: int64
sns.set(style="whitegrid")
i = sns.PairGrid(df, x_vars = ['loan_Cat'], y_vars = 'Interest_Rate', size = 5,
hue_order= df['Interest_Rate'])
i.map(sns.pointplot, color = sns.xkcd_rgb['red'])
i.fig.set_size_inches(15,5)
for ax in i.axes.flat:
plt.setp(ax.get_xticklabels(), rotation=90)
i.set(ylim = (5,26));
#change satet into 5 regions in US
states = {
"AK": "Other",
"AL": "South",
"AR": "South",
"AS": "Other",
"AZ": "West",
"CA": "West",
"CO": "West",
"CT": "Northeast",
"DC": "Northeast",
"DE": "Northeast",
"FL": "South",
"GA": "South",
"GU": "Other",
"HI": "Other",
"IA": "Midwest",
"ID": "West",
"IL": "Midwest",
"IN": "Midwest",
"KS": "Midwest",
"KY": "South",
"LA": "South",
"MA": "Northeast",
"MD": "Northeast",
"ME": "Northeast",
"MI": "West",
"MN": "Midwest",
"MO": "Midwest",
"MP": "Other",
"MS": "South",
"MT": "West",
"NA": "Other",
"NC": "South",
"ND": "Midwest",
"NE": "West",
"NH": "Northeast",
"NJ": "Northeast",
"NM": "West",
"NV": "West",
"NY": "Northeast",
"OH": "Midwest",
"OK": "South",
"OR": "West",
"PA": "Northeast",
"PR": "Other",
"RI": "Northeast",
"SC": "South",
"SD": "Midwest",
"TN": "South",
"TX": "South",
"UT": "West",
"VA": "South",
"VI": "Other",
"VT": "Northeast",
"WA": "West",
"WI": "Midwest",
"WV": "South",
"WY": "West",
}
df["Region"] = df["State"].map(states)
df = df.drop("State", axis=1)
df["Region"] = df["Region"].astype("category")
df['Region'].value_counts()
South 107299 West 99157 Northeast 81302 Midwest 48471 Other 2745 Name: Region, dtype: int64
#df1.groupby('State')[['State','Interest_Rate']].mean()
df.groupby('Region')[['Region','Interest_Rate']].mean()
#the interest rate in west is slightly lower than other region
| Interest_Rate | |
|---|---|
| Region | |
| Midwest | 13.942030 |
| Northeast | 13.938972 |
| Other | 14.446179 |
| South | 13.981531 |
| West | 13.902650 |
#visualization on the
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Region'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
<seaborn.axisgrid.PairGrid at 0x7f7c92b884f0>
sns.distplot(df[['Debit_Payment_Ratio']]['Debit_Payment_Ratio'],bins = 10);
df['Debit_Payment_Ratio'].describe()
count 338974.000000 mean 16.997916 std 7.696701 min 0.000000 25% 11.250000 50% 16.700000 75% 22.500000 max 39.990000 Name: Debit_Payment_Ratio, dtype: float64
df['Delinquency_Frequency'].value_counts()
0.0 280238 1.0 39793 2.0 11493 3.0 3964 4.0 1658 5.0 841 6.0 441 7.0 226 8.0 111 9.0 68 10.0 48 11.0 27 12.0 23 13.0 13 18.0 6 14.0 6 16.0 5 15.0 4 17.0 3 19.0 2 24.0 1 29.0 1 22.0 1 21.0 1 Name: Delinquency_Frequency, dtype: int64
sns.distplot(df[['Delinquency_Frequency']]['Delinquency_Frequency']);
df['Delinquency_Frequency'].describe()
count 338974.000000 mean 0.274284 std 0.779301 min 0.000000 25% 0.000000 50% 0.000000 75% 0.000000 max 29.000000 Name: Delinquency_Frequency, dtype: float64
since there's 228,206 is 0 requency, which accounts for about 82% of the data, therefore, will trun this column into categorical, turn numbers other than 0 into 1.
df['has_delinquency'] = df['Delinquency_Frequency'].apply(lambda x: 1 if x != 0 else 0)
df['has_delinquency']=df['has_delinquency'].astype("category")
df = df.drop(columns = ['Delinquency_Frequency'])
df['has_delinquency'].value_counts()
0 280238 1 58736 Name: has_delinquency, dtype: int64
df['Open_Credit_Line_Count'].describe()
count 338974.000000 mean 11.117991 std 4.896049 min 0.000000 25% 8.000000 50% 10.000000 75% 14.000000 max 76.000000 Name: Open_Credit_Line_Count, dtype: float64
#df.hist(column = 'Open_Credit_Line_Count')
sns.distplot(df['Open_Credit_Line_Count'])
<AxesSubplot:xlabel='Open_Credit_Line_Count', ylabel='Density'>
From the above plot and description of the column, we know that the data is right-skewed, and the min=0, therefore, will apply log transformation for this column.
df['log_Open_Credit_Line_Count'] = np.log10(df['Open_Credit_Line_Count'])
df['log_Open_Credit_Line_Count'] .replace([-np.inf], 0, inplace = True)
df=df.drop("Open_Credit_Line_Count", axis=1)
df.head(5)
| Interest_Rate | Loan_Requested | Loan_Grade | Years_Employed | Home_Ownership | Annual_Income | Verification | loan_Cat | Debit_Payment_Ratio | Inquiries_Count | Derogatory_Public_Record_Count | Total_Credit | Credit_Utilization_Rate | Total_Credit_Line_Count | Initial_Status | pay_36months | issued_month | issued_year | credit_earliest_month | credit_earliest_year | Region | has_delinquency | log_Open_Credit_Line_Count | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 11.89 | 25000 | B | 0-4 | RENT | 85000.0 | verified | debt_consolidation | 19.48 | 0.0 | 0.0 | 28854.0 | 52.10% | 42.0 | f | 0 | 8 | 2009 | 2 | 1994 | West | 0 | 1.000000 |
| 1 | 10.71 | 7000 | B | 0-4 | RENT | 65000.0 | not verified | credit_card | 14.29 | 0.0 | 0.0 | 33623.0 | 76.70% | 7.0 | f | 0 | 5 | 2008 | 10 | 2000 | Northeast | 0 | 0.845098 |
| 2 | 16.99 | 25000 | D | 0-4 | RENT | 70000.0 | verified | debt_consolidation | 10.50 | 0.0 | 0.0 | 19878.0 | 66.30% | 17.0 | f | 0 | 8 | 2014 | 6 | 2000 | Northeast | 0 | 1.000000 |
| 3 | 13.11 | 1200 | C | 10 | OWN | 54000.0 | not verified | debt_consolidation | 5.47 | 0.0 | 0.0 | 2584.0 | 40.40% | 31.0 | f | 0 | 3 | 2010 | 1 | 1985 | South | 0 | 0.698970 |
| 4 | 13.57 | 10800 | C | 5-9 | RENT | 32000.0 | not verified | debt_consolidation | 11.63 | 1.0 | 0.0 | 3511.0 | 25.60% | 40.0 | f | 0 | 11 | 2009 | 12 | 1996 | Northeast | 0 | 1.146128 |
sns.distplot(df['log_Open_Credit_Line_Count'])
<AxesSubplot:xlabel='log_Open_Credit_Line_Count', ylabel='Density'>
df.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 338974 entries, 0 to 399999 Data columns (total 23 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Interest_Rate 338974 non-null float64 1 Loan_Requested 338974 non-null int64 2 Loan_Grade 338974 non-null category 3 Years_Employed 338974 non-null object 4 Home_Ownership 338974 non-null category 5 Annual_Income 338974 non-null float64 6 Verification 338974 non-null object 7 loan_Cat 338974 non-null object 8 Debit_Payment_Ratio 338974 non-null float64 9 Inquiries_Count 338974 non-null float64 10 Derogatory_Public_Record_Count 338974 non-null float64 11 Total_Credit 338974 non-null float64 12 Credit_Utilization_Rate 338750 non-null object 13 Total_Credit_Line_Count 338974 non-null float64 14 Initial_Status 338974 non-null object 15 pay_36months 338974 non-null int64 16 issued_month 338974 non-null int64 17 issued_year 338974 non-null int64 18 credit_earliest_month 338974 non-null int64 19 credit_earliest_year 338974 non-null int64 20 Region 338974 non-null category 21 has_delinquency 338974 non-null category 22 log_Open_Credit_Line_Count 338974 non-null float64 dtypes: category(4), float64(8), int64(6), object(5) memory usage: 53.0+ MB
df['Derogatory_Public_Record_Count'].value_counts()
0.0 296216 1.0 37292 2.0 3668 3.0 1076 4.0 346 5.0 186 6.0 89 7.0 47 8.0 19 9.0 11 10.0 10 11.0 3 13.0 2 49.0 1 54.0 1 17.0 1 34.0 1 21.0 1 63.0 1 40.0 1 18.0 1 14.0 1 Name: Derogatory_Public_Record_Count, dtype: int64
df.groupby('Derogatory_Public_Record_Count')[['Interest_Rate']].mean()
| Interest_Rate | |
|---|---|
| Derogatory_Public_Record_Count | |
| 0.0 | 13.810919 |
| 1.0 | 14.775732 |
| 2.0 | 15.631284 |
| 3.0 | 15.564907 |
| 4.0 | 15.963699 |
| 5.0 | 15.638763 |
| 6.0 | 15.097079 |
| 7.0 | 15.042766 |
| 8.0 | 16.267368 |
| 9.0 | 16.111818 |
| 10.0 | 14.169000 |
| 11.0 | 18.830000 |
| 13.0 | 15.455000 |
| 14.0 | 14.990000 |
| 17.0 | 15.610000 |
| 18.0 | 13.980000 |
| 21.0 | 16.240000 |
| 34.0 | 14.980000 |
| 40.0 | 23.430000 |
| 49.0 | 13.670000 |
| 54.0 | 15.310000 |
| 63.0 | 12.990000 |
Since most of the data of the number of derogatory public records is 0(about 66%), will convert the data to categorical: other than 0 will be 1.
df['has_derogatory'] = df['Derogatory_Public_Record_Count'].apply(lambda x: 1 if x != 0 else 0)
df['has_derogatory']=df['has_derogatory'].astype("category")
df = df.drop(columns = ['Derogatory_Public_Record_Count'])
df['has_derogatory'].value_counts()
0 296216 1 42758 Name: has_derogatory, dtype: int64
df['Total_Credit'].describe()
count 3.389740e+05 mean 1.596715e+04 std 1.961100e+04 min 0.000000e+00 25% 6.462000e+03 50% 1.178150e+04 75% 2.023300e+04 max 2.568995e+06 Name: Total_Credit, dtype: float64
sns.distplot(df['Total_Credit'])
<AxesSubplot:xlabel='Total_Credit', ylabel='Density'>
fig = px.box(df, y="Total_Credit")
fig.show()
Since the total credit within the dataset has a lot of huge numbers, will define those numbers as outliers, and remove them if they are greater than 40889.
df = df[df['Total_Credit'] <= 40889]
df.shape
(323200, 23)
df['Credit_Utilization_Rate'] = df['Credit_Utilization_Rate'].str.replace("%","")
#for col in ["Credit_Utilization_Rate"]:
# df[col] = df[col].str.slice(stop=-1).astype("float")
df['Credit_Utilization_Rate']= pd.to_numeric(df['Credit_Utilization_Rate'])
df['Credit_Utilization_Rate'].describe()
count 322998.000000 mean 55.811935 std 23.726311 min 0.000000 25% 38.900000 50% 57.200000 75% 74.300000 max 892.300000 Name: Credit_Utilization_Rate, dtype: float64
df['Credit_Utilization_Rate'].isna().sum()
202
Since there's only 202 missing value in 'Credit_Utilization_Rate', which is less than 0.1% of the data, will fill with mean.
mean_value=df['Credit_Utilization_Rate'].mean()
df.loc['Credit_Utilization_Rate']=df['Credit_Utilization_Rate'].fillna(value=mean_value, inplace=True)
df.info()
<class 'pandas.core.frame.DataFrame'> Index: 323201 entries, 0 to Credit_Utilization_Rate Data columns (total 23 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Interest_Rate 323200 non-null float64 1 Loan_Requested 323200 non-null float64 2 Loan_Grade 323200 non-null object 3 Years_Employed 323200 non-null object 4 Home_Ownership 323200 non-null object 5 Annual_Income 323200 non-null float64 6 Verification 323200 non-null object 7 loan_Cat 323200 non-null object 8 Debit_Payment_Ratio 323200 non-null float64 9 Inquiries_Count 323200 non-null float64 10 Total_Credit 323200 non-null float64 11 Credit_Utilization_Rate 323200 non-null float64 12 Total_Credit_Line_Count 323200 non-null float64 13 Initial_Status 323200 non-null object 14 pay_36months 323200 non-null float64 15 issued_month 323200 non-null float64 16 issued_year 323200 non-null float64 17 credit_earliest_month 323200 non-null float64 18 credit_earliest_year 323200 non-null float64 19 Region 323200 non-null object 20 has_delinquency 323200 non-null float64 21 log_Open_Credit_Line_Count 323200 non-null float64 22 has_derogatory 323200 non-null float64 dtypes: float64(16), object(7) memory usage: 59.2+ MB
df['Total_Credit_Line_Count'].describe()
count 323200.000000 mean 24.633846 std 11.356222 min 2.000000 25% 16.000000 50% 23.000000 75% 31.000000 max 118.000000 Name: Total_Credit_Line_Count, dtype: float64
sns.distplot(df['Total_Credit_Line_Count'])
<AxesSubplot:xlabel='Total_Credit_Line_Count', ylabel='Density'>
fig = px.box(df, y="Total_Credit_Line_Count")
fig.show()
df = df[df['Total_Credit_Line_Count'] <= 53]
df.shape
(317178, 23)
df['Initial_Status'].value_counts()
f 218272 w 98906 Name: Initial_Status, dtype: int64
df.groupby('Initial_Status')[['Initial_Status','Interest_Rate']].mean()
#plot
sns.set(style="whitegrid")
g = sns.PairGrid(data=df, x_vars=['Initial_Status'], y_vars='Interest_Rate', size=5)
g.map(sns.pointplot, color=sns.xkcd_rgb["red"])
<seaborn.axisgrid.PairGrid at 0x7f7c92c1e640>
df['Initial_Status']=df['Initial_Status'].astype("category")
df.isna().sum()
Interest_Rate 0 Loan_Requested 0 Loan_Grade 0 Years_Employed 0 Home_Ownership 0 Annual_Income 0 Verification 0 loan_Cat 0 Debit_Payment_Ratio 0 Inquiries_Count 0 Total_Credit 0 Credit_Utilization_Rate 0 Total_Credit_Line_Count 0 Initial_Status 0 pay_36months 0 issued_month 0 issued_year 0 credit_earliest_month 0 credit_earliest_year 0 Region 0 has_delinquency 0 log_Open_Credit_Line_Count 0 has_derogatory 0 dtype: int64
#get dummies variables
df = pd.get_dummies(df, drop_first=True)
df.head()
| Interest_Rate | Loan_Requested | Annual_Income | Debit_Payment_Ratio | Inquiries_Count | Total_Credit | Credit_Utilization_Rate | Total_Credit_Line_Count | pay_36months | issued_month | issued_year | credit_earliest_month | credit_earliest_year | has_delinquency | log_Open_Credit_Line_Count | has_derogatory | Loan_Grade_B | Loan_Grade_C | Loan_Grade_D | Loan_Grade_E | Loan_Grade_F | Loan_Grade_G | Loan_Grade_Others | Years_Employed_10 | Years_Employed_5-9 | Home_Ownership_OTHER | Home_Ownership_OWN | Home_Ownership_RENT | Verification_verified | loan_Cat_credit_card | loan_Cat_debt_consolidation | loan_Cat_educational | loan_Cat_home_improvement | loan_Cat_house | loan_Cat_major_purchase | loan_Cat_medical | loan_Cat_moving | loan_Cat_other | loan_Cat_renewable_energy | loan_Cat_small_business | loan_Cat_vacation | loan_Cat_wedding | Initial_Status_w | Region_Northeast | Region_Other | Region_South | Region_West | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 11.89 | 25000.0 | 85000.0 | 19.48 | 0.0 | 28854.0 | 52.1 | 42.0 | 0.0 | 8.0 | 2009.0 | 2.0 | 1994.0 | 0.0 | 1.000000 | 0.0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 1 | 10.71 | 7000.0 | 65000.0 | 14.29 | 0.0 | 33623.0 | 76.7 | 7.0 | 0.0 | 5.0 | 2008.0 | 10.0 | 2000.0 | 0.0 | 0.845098 | 0.0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 2 | 16.99 | 25000.0 | 70000.0 | 10.50 | 0.0 | 19878.0 | 66.3 | 17.0 | 0.0 | 8.0 | 2014.0 | 6.0 | 2000.0 | 0.0 | 1.000000 | 0.0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 3 | 13.11 | 1200.0 | 54000.0 | 5.47 | 0.0 | 2584.0 | 40.4 | 31.0 | 0.0 | 3.0 | 2010.0 | 1.0 | 1985.0 | 0.0 | 0.698970 | 0.0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| 4 | 13.57 | 10800.0 | 32000.0 | 11.63 | 1.0 | 3511.0 | 25.6 | 40.0 | 0.0 | 11.0 | 2009.0 | 12.0 | 1996.0 | 0.0 | 1.146128 | 0.0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
df.info()
<class 'pandas.core.frame.DataFrame'> Index: 317178 entries, 0 to 399999 Data columns (total 47 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Interest_Rate 317178 non-null float64 1 Loan_Requested 317178 non-null float64 2 Annual_Income 317178 non-null float64 3 Debit_Payment_Ratio 317178 non-null float64 4 Inquiries_Count 317178 non-null float64 5 Total_Credit 317178 non-null float64 6 Credit_Utilization_Rate 317178 non-null float64 7 Total_Credit_Line_Count 317178 non-null float64 8 pay_36months 317178 non-null float64 9 issued_month 317178 non-null float64 10 issued_year 317178 non-null float64 11 credit_earliest_month 317178 non-null float64 12 credit_earliest_year 317178 non-null float64 13 has_delinquency 317178 non-null float64 14 log_Open_Credit_Line_Count 317178 non-null float64 15 has_derogatory 317178 non-null float64 16 Loan_Grade_B 317178 non-null uint8 17 Loan_Grade_C 317178 non-null uint8 18 Loan_Grade_D 317178 non-null uint8 19 Loan_Grade_E 317178 non-null uint8 20 Loan_Grade_F 317178 non-null uint8 21 Loan_Grade_G 317178 non-null uint8 22 Loan_Grade_Others 317178 non-null uint8 23 Years_Employed_10 317178 non-null uint8 24 Years_Employed_5-9 317178 non-null uint8 25 Home_Ownership_OTHER 317178 non-null uint8 26 Home_Ownership_OWN 317178 non-null uint8 27 Home_Ownership_RENT 317178 non-null uint8 28 Verification_verified 317178 non-null uint8 29 loan_Cat_credit_card 317178 non-null uint8 30 loan_Cat_debt_consolidation 317178 non-null uint8 31 loan_Cat_educational 317178 non-null uint8 32 loan_Cat_home_improvement 317178 non-null uint8 33 loan_Cat_house 317178 non-null uint8 34 loan_Cat_major_purchase 317178 non-null uint8 35 loan_Cat_medical 317178 non-null uint8 36 loan_Cat_moving 317178 non-null uint8 37 loan_Cat_other 317178 non-null uint8 38 loan_Cat_renewable_energy 317178 non-null uint8 39 loan_Cat_small_business 317178 non-null uint8 40 loan_Cat_vacation 317178 non-null uint8 41 loan_Cat_wedding 317178 non-null uint8 42 Initial_Status_w 317178 non-null uint8 43 Region_Northeast 317178 non-null uint8 44 Region_Other 317178 non-null uint8 45 Region_South 317178 non-null uint8 46 Region_West 317178 non-null uint8 dtypes: float64(16), uint8(31) memory usage: 58.6+ MB
X, y = df.drop("Interest_Rate", axis=1), df["Interest_Rate"]
(x_train, x_test, y_train, y_test) = train_test_split( X, y, test_size=0.2, random_state=1)
# Import DecisionTreeRegressor from sklearn.tree
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_squared_error as MSE
lr = LinearRegression()
# Fit 'linear' to the training set
lr.fit(x_train, y_train)
# Predict the test set labels 'y_pred'
lr_y_pred_test = lr.predict(x_test)
lr_y_pred_train = lr.predict(x_train)
lr_MSE_CV_scores = -cross_val_score(
lr, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)
# Evaluate the test set RMSE
lr_rmse_train = MSE(y_train, lr_y_pred_train) ** (1 / 2)
lr_rmse_test = MSE(y_test, lr_y_pred_test) ** (1 / 2)
lr_RMSE_CV = (lr_MSE_CV_scores.mean()) ** (1 / 2)
# Print the test set RMSE
print("Train set RMSE of rf: {:.2f}".format(lr_rmse_train))
print("Test set RMSE of rf: {:.2f}".format(lr_rmse_test))
print("CV RMSE: {:.2f}".format(lr_RMSE_CV))
Train set RMSE of rf: 1.93 Test set RMSE of rf: 1.95 CV RMSE: 1.94
lr.score(x_train, y_train)
0.8029651645841578
lr.score(x_test, y_test)
0.8005115397963668
#feature importance
importances = pd.DataFrame(
lr.coef_, columns=["Coefficients"], index=x_train.columns)
importances = importances.sort_values(by='Coefficients', ascending=False)[:10]
importances.plot(kind="barh", figsize=(9, 7))
plt.title("Ridge model")
plt.axvline(x=0, color=".5")
plt.subplots_adjust(left=0.3)
# Instantiate a random forests regressor 'rf' 400 estimators
rf = RandomForestRegressor(n_estimators=400, min_samples_leaf=0.1)
# Fit 'rf' to the training set
rf.fit(x_train, y_train)
# Predict the test set labels 'y_pred'
rf_y_pred_test = rf.predict(x_test)
rf_y_pred_train = rf.predict(x_train)
rf_MSE_CV_scores = -cross_val_score(
rf, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)
# Evaluate the test set RMSE
rf_rmse_test = MSE(y_test, rf_y_pred_test) ** (1 / 2)
rf_rmse_train = MSE(y_train, rf_y_pred_train) ** (1 / 2)
rf_RMSE_CV = (rf_MSE_CV_scores.mean()) ** (1 / 2)
# Print the test set RMSE
print("Train set RMSE of rf: {:.2f}".format(rf_rmse_train))
print("Test set RMSE of rf: {:.2f}".format(rf_rmse_test))
print("CV RMSE: {:.2f}".format(rf_RMSE_CV))
Train set RMSE of rf: 3.85 Test set RMSE of rf: 3.85 CV RMSE: 3.85
rf.score(x_train, y_train)
0.21887540205491063
rf.score(x_test, y_test)
0.22096955023741294
importances_rf = pd.Series(rf.feature_importances_, index=X.columns)
# Sort importances_rf
sorted_importances_rf = importances_rf.sort_values(ascending=False).head()
# Make a horizontal bar plot
sorted_importances_rf.plot(kind="barh", color="blue")
plt.show()
dt = DecisionTreeRegressor(max_depth=15, min_samples_leaf=0.1, random_state=6)
# Fit dt to the training set
dt.fit(x_train, y_train)
# Predict the labels of the training set
dt_y_pred_train = dt.predict(x_train)
dt_y_pred_test = dt.predict(x_test)
dt_MSE_CV_scores = -cross_val_score(
dt, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)
# Evaluate the training set RMSE of dt
dt_RMSE_train = (MSE(y_train, dt_y_pred_train)) ** (1 / 2)
dt_RMSE_test = (MSE(y_test, dt_y_pred_test)) ** (1 / 2)
dt_RMSE_CV = (dt_MSE_CV_scores.mean()) ** (1 / 2)
# Print RMSE score
print("Train RMSE: {:.2f}".format(dt_RMSE_train))
print("Test RMSE of dt: {:.2f}".format(dt_RMSE_test))
print("CV RMSE: {:.2f}".format(dt_RMSE_CV))
Train RMSE: 3.64 Test RMSE of dt: 3.64 CV RMSE: 3.64
dt.score(x_train, y_train)
0.3008469440519915
dt.score(x_test, y_test)
0.30341919246493654
dt1 = DecisionTreeRegressor(max_depth=40, min_samples_leaf=0.05, random_state=6)
# Fit dt to the training set
dt1.fit(x_train, y_train)
# Predict the labels
dt1_y_pred_train = dt1.predict(x_train)
dt1_y_pred_test = dt1.predict(x_test)
# Compute the array containing the 10-folds CV MSEs
dt1_MSE_CV_scores = -cross_val_score(
dt1, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)
# Evaluate the training set RMSE of dt
dt1_RMSE_train = (MSE(y_train, dt1_y_pred_train)) ** (1 / 2)
dt1_RMSE_test = (MSE(y_test, dt1_y_pred_test)) ** (1 / 2)
dt1_RMSE_CV = (dt1_MSE_CV_scores.mean()) ** (1 / 2)
# Print RMSE_train
print("Train RMSE: {:.2f}".format(dt1_RMSE_train))
print("Test RMSE of dt: {:.2f}".format(dt1_RMSE_test))
print("CV RMSE: {:.2f}".format(dt1_RMSE_CV))
Train RMSE: 2.98 Test RMSE of dt: 2.96 CV RMSE: 2.98
dt1.score(x_train, y_train)
0.5335649314897272
dt1.score(x_test, y_test)
0.539498205910132
gb = GradientBoostingRegressor(max_depth=10, n_estimators=200, random_state=2)
# Fit gb to the training set
gb.fit(x_train, y_train)
# Predict labels
gb_y_pred_train = gb.predict(x_train)
gb_y_pred_test = gb.predict(x_test)
# Compute the array containing the 10-folds CV MSEs
gb_MSE_CV_scores = -cross_val_score(
dt1, x_train, y_train, cv=10, scoring="neg_mean_squared_error", n_jobs=-1
)
# Evaluate the RMSE of gb
gb_RMSE_train = (MSE(y_train, gb_y_pred_train)) ** (1 / 2)
gb_RMSE_test = (MSE(y_test, gb_y_pred_test)) ** (1 / 2)
# Compute the 10-folds CV RMSE
gb_RMSE_CV = (gb_MSE_CV_scores.mean()) ** (1 / 2)
# Print RMSE score
print("Train RMSE: {:.2f}".format(gb_RMSE_train))
print("Test RMSE of dt: {:.2f}".format(gb_RMSE_test))
print("CV RMSE: {:.2f}".format(gb_RMSE_CV))
Train RMSE: 1.09 Test RMSE of dt: 1.51 CV RMSE: 2.98
gb.score(x_train, y_train)
0.9369237979514815
gb.score(x_test, y_test)
0.8805048689825804
test = pd.read_csv('Holdout for Testing.csv')
#rename column name
test.columns = ['Interest_Rate', 'loanID', 'borID', 'Loan_Requested', 'Loan_Funded', 'Investor_portion', \
'Number_of_Payments', 'Loan_Grade','loanSGrade','job', 'Years_Employed', 'Home_Ownership',\
'Annual_Income', 'Verification', 'Issued_MonYY','reason_Loan', 'loan_Cat','loanTitle', 'zip_3',\
'State', 'Debit_Payment_Ratio', 'Delinquency_Frequency','Credit_Earliest_MonYY','Inquiries_Count',\
'Delinquency_Recency', 'Public_Record_Recency','Open_Credit_Line_Count', 'Derogatory_Public_Record_Count',\
'Total_Credit','Credit_Utilization_Rate','Total_Credit_Line_Count','Initial_Status']
test.head(5)
| Interest_Rate | loanID | borID | Loan_Requested | Loan_Funded | Investor_portion | Number_of_Payments | Loan_Grade | loanSGrade | job | Years_Employed | Home_Ownership | Annual_Income | Verification | Issued_MonYY | reason_Loan | loan_Cat | loanTitle | zip_3 | State | Debit_Payment_Ratio | Delinquency_Frequency | Credit_Earliest_MonYY | Inquiries_Count | Delinquency_Recency | Public_Record_Recency | Open_Credit_Line_Count | Derogatory_Public_Record_Count | Total_Credit | Credit_Utilization_Rate | Total_Credit_Line_Count | Initial_Status | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | 44409194 | 47416907 | $6,000 | $6,000 | $6,000 | 36 months | C | C5 | Electrician | 10+ years | MORTGAGE | 68000.0 | VERIFIED - income | 15-Mar | NaN | debt_consolidation | Debt consolidation | 430xx | OH | 28.31 | 0 | 2-Nov | 1 | 26.0 | NaN | 18 | 0 | 19861 | 64.50% | 33 | f |
| 1 | NaN | 44017917 | 47034722 | $24,000 | $24,000 | $24,000 | 36 months | A | A1 | Executive Assistant | 8 years | RENT | 110480.0 | VERIFIED - income | 15-Mar | NaN | debt_consolidation | Debt consolidation | 945xx | CA | 16.03 | 0 | Dec-68 | 1 | NaN | NaN | 12 | 0 | 17001 | 26.20% | 36 | w |
| 2 | NaN | 44259158 | 47306871 | $35,000 | $35,000 | $35,000 | 36 months | C | C2 | District Sales Leader | 10+ years | MORTGAGE | 86000.0 | VERIFIED - income | 15-Mar | NaN | debt_consolidation | Debt consolidation | 195xx | PA | 32.49 | 0 | Oct-98 | 0 | NaN | NaN | 16 | 0 | 25797 | 49.90% | 33 | w |
| 3 | NaN | 44429213 | 47476932 | $10,000 | $10,000 | $10,000 | 60 months | D | D1 | pharmacy associate | 10+ years | RENT | 30000.0 | VERIFIED - income source | 15-Mar | NaN | debt_consolidation | Debt consolidation | 921xx | CA | 32.96 | 0 | Feb-99 | 1 | NaN | 114.0 | 13 | 1 | 9586 | 43.80% | 21 | w |
| 4 | NaN | 44299188 | 47346901 | $24,000 | $24,000 | $24,000 | 60 months | B | B1 | Medical case manager | 10+ years | MORTGAGE | 82500.0 | VERIFIED - income | 15-Mar | NaN | debt_consolidation | Debt consolidation | 196xx | PA | 31.03 | 0 | 2-Dec | 0 | 48.0 | NaN | 27 | 0 | 31842 | 41.30% | 43 | w |
#drop interest_rate in the test data
test = test.drop("Interest_Rate", axis=1)
test.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 80000 entries, 0 to 79999 Data columns (total 31 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 loanID 80000 non-null int64 1 borID 80000 non-null int64 2 Loan_Requested 80000 non-null object 3 Loan_Funded 80000 non-null object 4 Investor_portion 80000 non-null object 5 Number_of_Payments 80000 non-null object 6 Loan_Grade 80000 non-null object 7 loanSGrade 80000 non-null object 8 job 75606 non-null object 9 Years_Employed 75618 non-null object 10 Home_Ownership 80000 non-null object 11 Annual_Income 80000 non-null float64 12 Verification 80000 non-null object 13 Issued_MonYY 80000 non-null object 14 reason_Loan 15 non-null object 15 loan_Cat 80000 non-null object 16 loanTitle 80000 non-null object 17 zip_3 80000 non-null object 18 State 80000 non-null object 19 Debit_Payment_Ratio 80000 non-null float64 20 Delinquency_Frequency 80000 non-null int64 21 Credit_Earliest_MonYY 80000 non-null object 22 Inquiries_Count 80000 non-null int64 23 Delinquency_Recency 41296 non-null float64 24 Public_Record_Recency 13839 non-null float64 25 Open_Credit_Line_Count 80000 non-null int64 26 Derogatory_Public_Record_Count 80000 non-null int64 27 Total_Credit 80000 non-null int64 28 Credit_Utilization_Rate 79970 non-null object 29 Total_Credit_Line_Count 80000 non-null int64 30 Initial_Status 80000 non-null object dtypes: float64(4), int64(8), object(19) memory usage: 18.9+ MB
# drop variables that are not predictive to target variable
test=test.drop(columns = ['reason_Loan', 'loanTitle','Delinquency_Recency', 'Public_Record_Recency'])
test=test.drop(columns = ['loanID', 'borID','loanSGrade','zip_3'])
test=test.drop(columns = ['job'])
#Loan_Requested, Loan_Funded,Investor_portion
test.Loan_Requested = test.Loan_Requested.replace('[\$\,]','', regex = True).astype(int)
test.Loan_Funded = test.Loan_Funded.replace('[\$\,]','', regex = True).astype(int)
test.Investor_portion = test.Investor_portion.replace('[\$\,]','', regex = True).astype(int)
test=test.drop(['Loan_Funded','Investor_portion'],axis=1)
# Number_of_Payments
test['pay_36months'] = test['Number_of_Payments'].apply(lambda x: 1 if x == '36 months' else 0)
test = test.drop('Number_of_Payments', axis=1)
#loan grade
test["Loan_Grade"] = test["Loan_Grade"].fillna('Others').astype("category")
#Years_Employed
test['Years_Employed']= test['Years_Employed'].str.replace('years','').str.replace('year','').str.replace('+','')
test['Years_Employed']= test['Years_Employed'].str.replace('< 1','0')
test['Years_Employed']= test['Years_Employed'].astype('float')
test['Years_Employed']=test['Years_Employed'].interpolate()
new=['0-4','5-9','10']
test['Years_Employed']= [new[int(x)//5] if x!='Other' else 'Other' for x in test['Years_Employed']]
#Home_Ownership
test['Home_Ownership']=test['Home_Ownership'].str.replace('NONE','OTHER').str.replace('ANY','OTHER')
test['Home_Ownership']=test['Home_Ownership'].fillna("OTHER")
test['Home_Ownership'] = test['Home_Ownership'].astype("category")
#Verification
test["Verification"] = test["Verification"].str.replace("VERIFIED - income", "verified").str.replace("verified source","verified")
test['Verification'] = test['Verification'].astype("category")
Found that the pattern for this test data is different from the original data
test = test.sort_values("Credit_Earliest_MonYY").reset_index()
test["Credit_Earliest_MonYY"][30000:35000]
30000 7-Jan 30001 7-Jan 30002 7-Jan 30003 7-Jan 30004 7-Jan 30005 7-Jan 30006 7-Jan 30007 7-Jan 30008 7-Jan 30009 7-Jan 30010 7-Jan 30011 7-Jan 30012 7-Jan 30013 7-Jan 30014 7-Jan 30015 7-Jan 30016 7-Jan 30017 7-Jan 30018 7-Jan 30019 7-Jan 30020 7-Jan 30021 7-Jan 30022 7-Jan 30023 7-Jan 30024 7-Jan 30025 7-Jan 30026 7-Jan 30027 7-Jan 30028 7-Jan 30029 7-Jan 30030 7-Jan 30031 7-Jan 30032 7-Jan 30033 7-Jan 30034 7-Jan 30035 7-Jan 30036 7-Jan 30037 7-Jan 30038 7-Jan 30039 7-Jan 30040 7-Jan 30041 7-Jan 30042 7-Jan 30043 7-Jan 30044 7-Jan 30045 7-Jan 30046 7-Jan 30047 7-Jan 30048 7-Jan 30049 7-Jan 30050 7-Jan 30051 7-Jan 30052 7-Jan 30053 7-Jan 30054 7-Jan 30055 7-Jan 30056 7-Jan 30057 7-Jan 30058 7-Jan 30059 7-Jan 30060 7-Jan 30061 7-Jan 30062 7-Jan 30063 7-Jul 30064 7-Jul 30065 7-Jul 30066 7-Jul 30067 7-Jul 30068 7-Jul 30069 7-Jul 30070 7-Jul 30071 7-Jul 30072 7-Jul 30073 7-Jul 30074 7-Jul 30075 7-Jul 30076 7-Jul 30077 7-Jul 30078 7-Jul 30079 7-Jul 30080 7-Jul 30081 7-Jul 30082 7-Jul 30083 7-Jul 30084 7-Jul 30085 7-Jul 30086 7-Jul 30087 7-Jul 30088 7-Jul 30089 7-Jul 30090 7-Jul 30091 7-Jul 30092 7-Jul 30093 7-Jul 30094 7-Jul 30095 7-Jul 30096 7-Jul 30097 7-Jul 30098 7-Jul 30099 7-Jul 30100 7-Jul 30101 7-Jul 30102 7-Jul 30103 7-Jul 30104 7-Jul 30105 7-Jul 30106 7-Jul 30107 7-Jul 30108 7-Jul 30109 7-Jul 30110 7-Jul 30111 7-Jul 30112 7-Jul 30113 7-Jul 30114 7-Jul 30115 7-Jul 30116 7-Jul 30117 7-Jul 30118 7-Jul 30119 7-Jul 30120 7-Jul 30121 7-Jul 30122 7-Jul 30123 7-Jul 30124 7-Jul 30125 7-Jul 30126 7-Jul 30127 7-Jul 30128 7-Jul 30129 7-Jul 30130 7-Jul 30131 7-Jul 30132 7-Jul 30133 7-Jul 30134 7-Jul 30135 7-Jul 30136 7-Jul 30137 7-Jul 30138 7-Jul 30139 7-Jul 30140 7-Jul 30141 7-Jul 30142 7-Jul 30143 7-Jul 30144 7-Jul 30145 7-Jul 30146 7-Jul 30147 7-Jul 30148 7-Jul 30149 7-Jul 30150 7-Jul 30151 7-Jul 30152 7-Jul 30153 7-Jul 30154 7-Jul 30155 7-Jul 30156 7-Jul 30157 7-Jul 30158 7-Jul 30159 7-Jul 30160 7-Jul 30161 7-Jul 30162 7-Jul 30163 7-Jul 30164 7-Jul 30165 7-Jul 30166 7-Jul 30167 7-Jul 30168 7-Jul 30169 7-Jul 30170 7-Jul 30171 7-Jul 30172 7-Jul 30173 7-Jul 30174 7-Jul 30175 7-Jul 30176 7-Jul 30177 7-Jul 30178 7-Jul 30179 7-Jul 30180 7-Jul 30181 7-Jul 30182 7-Jul 30183 7-Jul 30184 7-Jul 30185 7-Jul 30186 7-Jul 30187 7-Jul 30188 7-Jul 30189 7-Jul 30190 7-Jul 30191 7-Jul 30192 7-Jul 30193 7-Jul 30194 7-Jul 30195 7-Jul 30196 7-Jul 30197 7-Jul 30198 7-Jul 30199 7-Jul 30200 7-Jul 30201 7-Jul 30202 7-Jul 30203 7-Jul 30204 7-Jul 30205 7-Jul 30206 7-Jul 30207 7-Jul 30208 7-Jul 30209 7-Jul 30210 7-Jul 30211 7-Jul 30212 7-Jul 30213 7-Jul 30214 7-Jul 30215 7-Jul 30216 7-Jul 30217 7-Jul 30218 7-Jul 30219 7-Jul 30220 7-Jul 30221 7-Jul 30222 7-Jul 30223 7-Jul 30224 7-Jul 30225 7-Jul 30226 7-Jul 30227 7-Jul 30228 7-Jul 30229 7-Jul 30230 7-Jul 30231 7-Jul 30232 7-Jul 30233 7-Jul 30234 7-Jul 30235 7-Jul 30236 7-Jul 30237 7-Jul 30238 7-Jul 30239 7-Jul 30240 7-Jul 30241 7-Jul 30242 7-Jul 30243 7-Jul 30244 7-Jul 30245 7-Jul 30246 7-Jul 30247 7-Jul 30248 7-Jul 30249 7-Jul 30250 7-Jul 30251 7-Jul 30252 7-Jul 30253 7-Jul 30254 7-Jul 30255 7-Jul 30256 7-Jul 30257 7-Jul 30258 7-Jul 30259 7-Jul 30260 7-Jul 30261 7-Jul 30262 7-Jul 30263 7-Jul 30264 7-Jul 30265 7-Jul 30266 7-Jul 30267 7-Jul 30268 7-Jul 30269 7-Jul 30270 7-Jul 30271 7-Jun 30272 7-Jun 30273 7-Jun 30274 7-Jun 30275 7-Jun 30276 7-Jun 30277 7-Jun 30278 7-Jun 30279 7-Jun 30280 7-Jun 30281 7-Jun 30282 7-Jun 30283 7-Jun 30284 7-Jun 30285 7-Jun 30286 7-Jun 30287 7-Jun 30288 7-Jun 30289 7-Jun 30290 7-Jun 30291 7-Jun 30292 7-Jun 30293 7-Jun 30294 7-Jun 30295 7-Jun 30296 7-Jun 30297 7-Jun 30298 7-Jun 30299 7-Jun 30300 7-Jun 30301 7-Jun 30302 7-Jun 30303 7-Jun 30304 7-Jun 30305 7-Jun 30306 7-Jun 30307 7-Jun 30308 7-Jun 30309 7-Jun 30310 7-Jun 30311 7-Jun 30312 7-Jun 30313 7-Jun 30314 7-Jun 30315 7-Jun 30316 7-Jun 30317 7-Jun 30318 7-Jun 30319 7-Jun 30320 7-Jun 30321 7-Jun 30322 7-Jun 30323 7-Jun 30324 7-Jun 30325 7-Jun 30326 7-Jun 30327 7-Jun 30328 7-Jun 30329 7-Jun 30330 7-Jun 30331 7-Jun 30332 7-Jun 30333 7-Jun 30334 7-Jun 30335 7-Jun 30336 7-Jun 30337 7-Jun 30338 7-Jun 30339 7-Jun 30340 7-Jun 30341 7-Jun 30342 7-Jun 30343 7-Jun 30344 7-Jun 30345 7-Jun 30346 7-Jun 30347 7-Jun 30348 7-Jun 30349 7-Jun 30350 7-Jun 30351 7-Jun 30352 7-Jun 30353 7-Jun 30354 7-Jun 30355 7-Jun 30356 7-Jun 30357 7-Jun 30358 7-Jun 30359 7-Jun 30360 7-Jun 30361 7-Jun 30362 7-Jun 30363 7-Jun 30364 7-Jun 30365 7-Jun 30366 7-Jun 30367 7-Jun 30368 7-Jun 30369 7-Jun 30370 7-Jun 30371 7-Jun 30372 7-Jun 30373 7-Jun 30374 7-Jun 30375 7-Jun 30376 7-Jun 30377 7-Jun 30378 7-Jun 30379 7-Jun 30380 7-Jun 30381 7-Jun 30382 7-Jun 30383 7-Jun 30384 7-Jun 30385 7-Jun 30386 7-Jun 30387 7-Jun 30388 7-Jun 30389 7-Jun 30390 7-Jun 30391 7-Jun 30392 7-Jun 30393 7-Jun 30394 7-Jun 30395 7-Jun 30396 7-Jun 30397 7-Jun 30398 7-Jun 30399 7-Jun 30400 7-Jun 30401 7-Jun 30402 7-Jun 30403 7-Jun 30404 7-Jun 30405 7-Jun 30406 7-Jun 30407 7-Jun 30408 7-Jun 30409 7-Jun 30410 7-Jun 30411 7-Jun 30412 7-Jun 30413 7-Jun 30414 7-Jun 30415 7-Jun 30416 7-Jun 30417 7-Jun 30418 7-Jun 30419 7-Jun 30420 7-Jun 30421 7-Jun 30422 7-Jun 30423 7-Jun 30424 7-Jun 30425 7-Jun 30426 7-Jun 30427 7-Jun 30428 7-Jun 30429 7-Jun 30430 7-Jun 30431 7-Jun 30432 7-Jun 30433 7-Jun 30434 7-Jun 30435 7-Jun 30436 7-Jun 30437 7-Jun 30438 7-Jun 30439 7-Jun 30440 7-Jun 30441 7-Jun 30442 7-Jun 30443 7-Jun 30444 7-Jun 30445 7-Jun 30446 7-Jun 30447 7-Jun 30448 7-Jun 30449 7-Jun 30450 7-Jun 30451 7-Jun 30452 7-Jun 30453 7-Jun 30454 7-Jun 30455 7-Jun 30456 7-Jun 30457 7-Jun 30458 7-Jun 30459 7-Jun 30460 7-Jun 30461 7-Jun 30462 7-Jun 30463 7-Jun 30464 7-Jun 30465 7-Jun 30466 7-Jun 30467 7-Jun 30468 7-Jun 30469 7-Jun 30470 7-Jun 30471 7-Jun 30472 7-Jun 30473 7-Mar 30474 7-Mar 30475 7-Mar 30476 7-Mar 30477 7-Mar 30478 7-Mar 30479 7-Mar 30480 7-Mar 30481 7-Mar 30482 7-Mar 30483 7-Mar 30484 7-Mar 30485 7-Mar 30486 7-Mar 30487 7-Mar 30488 7-Mar 30489 7-Mar 30490 7-Mar 30491 7-Mar 30492 7-Mar 30493 7-Mar 30494 7-Mar 30495 7-Mar 30496 7-Mar 30497 7-Mar 30498 7-Mar 30499 7-Mar 30500 7-Mar 30501 7-Mar 30502 7-Mar 30503 7-Mar 30504 7-Mar 30505 7-Mar 30506 7-Mar 30507 7-Mar 30508 7-Mar 30509 7-Mar 30510 7-Mar 30511 7-Mar 30512 7-Mar 30513 7-Mar 30514 7-Mar 30515 7-Mar 30516 7-Mar 30517 7-Mar 30518 7-Mar 30519 7-Mar 30520 7-Mar 30521 7-Mar 30522 7-Mar 30523 7-Mar 30524 7-Mar 30525 7-Mar 30526 7-Mar 30527 7-Mar 30528 7-Mar 30529 7-Mar 30530 7-Mar 30531 7-Mar 30532 7-Mar 30533 7-Mar 30534 7-Mar 30535 7-Mar 30536 7-Mar 30537 7-Mar 30538 7-Mar 30539 7-Mar 30540 7-Mar 30541 7-Mar 30542 7-Mar 30543 7-Mar 30544 7-Mar 30545 7-Mar 30546 7-Mar 30547 7-Mar 30548 7-Mar 30549 7-Mar 30550 7-Mar 30551 7-Mar 30552 7-Mar 30553 7-Mar 30554 7-Mar 30555 7-Mar 30556 7-Mar 30557 7-Mar 30558 7-Mar 30559 7-Mar 30560 7-Mar 30561 7-Mar 30562 7-Mar 30563 7-Mar 30564 7-Mar 30565 7-Mar 30566 7-Mar 30567 7-Mar 30568 7-Mar 30569 7-Mar 30570 7-Mar 30571 7-Mar 30572 7-Mar 30573 7-Mar 30574 7-Mar 30575 7-Mar 30576 7-Mar 30577 7-Mar 30578 7-Mar 30579 7-Mar 30580 7-Mar 30581 7-Mar 30582 7-Mar 30583 7-Mar 30584 7-Mar 30585 7-Mar 30586 7-Mar 30587 7-Mar 30588 7-Mar 30589 7-Mar 30590 7-Mar 30591 7-Mar 30592 7-Mar 30593 7-Mar 30594 7-Mar 30595 7-Mar 30596 7-Mar 30597 7-Mar 30598 7-Mar 30599 7-Mar 30600 7-Mar 30601 7-Mar 30602 7-Mar 30603 7-Mar 30604 7-Mar 30605 7-Mar 30606 7-Mar 30607 7-Mar 30608 7-Mar 30609 7-Mar 30610 7-Mar 30611 7-Mar 30612 7-Mar 30613 7-Mar 30614 7-Mar 30615 7-Mar 30616 7-Mar 30617 7-Mar 30618 7-Mar 30619 7-Mar 30620 7-Mar 30621 7-Mar 30622 7-Mar 30623 7-Mar 30624 7-Mar 30625 7-Mar 30626 7-Mar 30627 7-Mar 30628 7-Mar 30629 7-Mar 30630 7-Mar 30631 7-Mar 30632 7-Mar 30633 7-Mar 30634 7-Mar 30635 7-Mar 30636 7-Mar 30637 7-Mar 30638 7-Mar 30639 7-Mar 30640 7-Mar 30641 7-Mar 30642 7-Mar 30643 7-Mar 30644 7-Mar 30645 7-Mar 30646 7-Mar 30647 7-Mar 30648 7-Mar 30649 7-Mar 30650 7-Mar 30651 7-Mar 30652 7-Mar 30653 7-Mar 30654 7-Mar 30655 7-Mar 30656 7-Mar 30657 7-Mar 30658 7-Mar 30659 7-Mar 30660 7-Mar 30661 7-Mar 30662 7-Mar 30663 7-Mar 30664 7-Mar 30665 7-Mar 30666 7-Mar 30667 7-Mar 30668 7-Mar 30669 7-Mar 30670 7-Mar 30671 7-Mar 30672 7-Mar 30673 7-Mar 30674 7-Mar 30675 7-Mar 30676 7-May 30677 7-May 30678 7-May 30679 7-May 30680 7-May 30681 7-May 30682 7-May 30683 7-May 30684 7-May 30685 7-May 30686 7-May 30687 7-May 30688 7-May 30689 7-May 30690 7-May 30691 7-May 30692 7-May 30693 7-May 30694 7-May 30695 7-May 30696 7-May 30697 7-May 30698 7-May 30699 7-May 30700 7-May 30701 7-May 30702 7-May 30703 7-May 30704 7-May 30705 7-May 30706 7-May 30707 7-May 30708 7-May 30709 7-May 30710 7-May 30711 7-May 30712 7-May 30713 7-May 30714 7-May 30715 7-May 30716 7-May 30717 7-May 30718 7-May 30719 7-May 30720 7-May 30721 7-May 30722 7-May 30723 7-May 30724 7-May 30725 7-May 30726 7-May 30727 7-May 30728 7-May 30729 7-May 30730 7-May 30731 7-May 30732 7-May 30733 7-May 30734 7-May 30735 7-May 30736 7-May 30737 7-May 30738 7-May 30739 7-May 30740 7-May 30741 7-May 30742 7-May 30743 7-May 30744 7-May 30745 7-May 30746 7-May 30747 7-May 30748 7-May 30749 7-May 30750 7-May 30751 7-May 30752 7-May 30753 7-May 30754 7-May 30755 7-May 30756 7-May 30757 7-May 30758 7-May 30759 7-May 30760 7-May 30761 7-May 30762 7-May 30763 7-May 30764 7-May 30765 7-May 30766 7-May 30767 7-May 30768 7-May 30769 7-May 30770 7-May 30771 7-May 30772 7-May 30773 7-May 30774 7-May 30775 7-May 30776 7-May 30777 7-May 30778 7-May 30779 7-May 30780 7-May 30781 7-May 30782 7-May 30783 7-May 30784 7-May 30785 7-May 30786 7-May 30787 7-May 30788 7-May 30789 7-May 30790 7-May 30791 7-May 30792 7-May 30793 7-May 30794 7-May 30795 7-May 30796 7-May 30797 7-May 30798 7-May 30799 7-May 30800 7-May 30801 7-May 30802 7-May 30803 7-May 30804 7-May 30805 7-May 30806 7-May 30807 7-May 30808 7-May 30809 7-May 30810 7-May 30811 7-May 30812 7-May 30813 7-May 30814 7-May 30815 7-May 30816 7-May 30817 7-May 30818 7-May 30819 7-May 30820 7-May 30821 7-May 30822 7-May 30823 7-May 30824 7-May 30825 7-May 30826 7-May 30827 7-May 30828 7-May 30829 7-May 30830 7-May 30831 7-May 30832 7-May 30833 7-May 30834 7-May 30835 7-May 30836 7-May 30837 7-May 30838 7-May 30839 7-May 30840 7-May 30841 7-May 30842 7-May 30843 7-May 30844 7-May 30845 7-May 30846 7-May 30847 7-May 30848 7-May 30849 7-May 30850 7-May 30851 7-May 30852 7-May 30853 7-May 30854 7-May 30855 7-May 30856 7-May 30857 7-Nov 30858 7-Nov 30859 7-Nov 30860 7-Nov 30861 7-Nov 30862 7-Nov 30863 7-Nov 30864 7-Nov 30865 7-Nov 30866 7-Nov 30867 7-Nov 30868 7-Nov 30869 7-Nov 30870 7-Nov 30871 7-Nov 30872 7-Nov 30873 7-Nov 30874 7-Nov 30875 7-Nov 30876 7-Nov 30877 7-Nov 30878 7-Nov 30879 7-Nov 30880 7-Nov 30881 7-Nov 30882 7-Nov 30883 7-Nov 30884 7-Nov 30885 7-Nov 30886 7-Nov 30887 7-Nov 30888 7-Nov 30889 7-Nov 30890 7-Nov 30891 7-Nov 30892 7-Nov 30893 7-Nov 30894 7-Nov 30895 7-Nov 30896 7-Nov 30897 7-Nov 30898 7-Nov 30899 7-Nov 30900 7-Nov 30901 7-Nov 30902 7-Nov 30903 7-Nov 30904 7-Nov 30905 7-Nov 30906 7-Nov 30907 7-Nov 30908 7-Nov 30909 7-Nov 30910 7-Nov 30911 7-Nov 30912 7-Nov 30913 7-Nov 30914 7-Nov 30915 7-Nov 30916 7-Nov 30917 7-Nov 30918 7-Nov 30919 7-Nov 30920 7-Nov 30921 7-Nov 30922 7-Nov 30923 7-Nov 30924 7-Nov 30925 7-Nov 30926 7-Nov 30927 7-Nov 30928 7-Nov 30929 7-Nov 30930 7-Nov 30931 7-Nov 30932 7-Nov 30933 7-Nov 30934 7-Nov 30935 7-Nov 30936 7-Nov 30937 7-Nov 30938 7-Nov 30939 7-Nov 30940 7-Nov 30941 7-Nov 30942 7-Nov 30943 7-Nov 30944 7-Nov 30945 7-Nov 30946 7-Nov 30947 7-Nov 30948 7-Nov 30949 7-Nov 30950 7-Nov 30951 7-Nov 30952 7-Nov 30953 7-Nov 30954 7-Nov 30955 7-Nov 30956 7-Nov 30957 7-Nov 30958 7-Nov 30959 7-Nov 30960 7-Nov 30961 7-Nov 30962 7-Nov 30963 7-Nov 30964 7-Nov 30965 7-Nov 30966 7-Nov 30967 7-Nov 30968 7-Nov 30969 7-Nov 30970 7-Nov 30971 7-Nov 30972 7-Nov 30973 7-Nov 30974 7-Nov 30975 7-Nov 30976 7-Nov 30977 7-Nov 30978 7-Nov 30979 7-Nov 30980 7-Nov 30981 7-Nov 30982 7-Nov 30983 7-Nov 30984 7-Nov 30985 7-Nov 30986 7-Nov 30987 7-Nov 30988 7-Nov 30989 7-Nov 30990 7-Nov 30991 7-Nov 30992 7-Nov 30993 7-Nov 30994 7-Nov 30995 7-Nov 30996 7-Nov 30997 7-Nov 30998 7-Nov 30999 7-Nov 31000 7-Nov 31001 7-Nov 31002 7-Nov 31003 7-Nov 31004 7-Nov 31005 7-Nov 31006 7-Nov 31007 7-Nov 31008 7-Nov 31009 7-Nov 31010 7-Nov 31011 7-Nov 31012 7-Nov 31013 7-Nov 31014 7-Nov 31015 7-Nov 31016 7-Nov 31017 7-Nov 31018 7-Nov 31019 7-Nov 31020 7-Nov 31021 7-Nov 31022 7-Oct 31023 7-Oct 31024 7-Oct 31025 7-Oct 31026 7-Oct 31027 7-Oct 31028 7-Oct 31029 7-Oct 31030 7-Oct 31031 7-Oct 31032 7-Oct 31033 7-Oct 31034 7-Oct 31035 7-Oct 31036 7-Oct 31037 7-Oct 31038 7-Oct 31039 7-Oct 31040 7-Oct 31041 7-Oct 31042 7-Oct 31043 7-Oct 31044 7-Oct 31045 7-Oct 31046 7-Oct 31047 7-Oct 31048 7-Oct 31049 7-Oct 31050 7-Oct 31051 7-Oct 31052 7-Oct 31053 7-Oct 31054 7-Oct 31055 7-Oct 31056 7-Oct 31057 7-Oct 31058 7-Oct 31059 7-Oct 31060 7-Oct 31061 7-Oct 31062 7-Oct 31063 7-Oct 31064 7-Oct 31065 7-Oct 31066 7-Oct 31067 7-Oct 31068 7-Oct 31069 7-Oct 31070 7-Oct 31071 7-Oct 31072 7-Oct 31073 7-Oct 31074 7-Oct 31075 7-Oct 31076 7-Oct 31077 7-Oct 31078 7-Oct 31079 7-Oct 31080 7-Oct 31081 7-Oct 31082 7-Oct 31083 7-Oct 31084 7-Oct 31085 7-Oct 31086 7-Oct 31087 7-Oct 31088 7-Oct 31089 7-Oct 31090 7-Oct 31091 7-Oct 31092 7-Oct 31093 7-Oct 31094 7-Oct 31095 7-Oct 31096 7-Oct 31097 7-Oct 31098 7-Oct 31099 7-Oct 31100 7-Oct 31101 7-Oct 31102 7-Oct 31103 7-Oct 31104 7-Oct 31105 7-Oct 31106 7-Oct 31107 7-Oct 31108 7-Oct 31109 7-Oct 31110 7-Oct 31111 7-Oct 31112 7-Oct 31113 7-Oct 31114 7-Oct 31115 7-Oct 31116 7-Oct 31117 7-Oct 31118 7-Oct 31119 7-Oct 31120 7-Oct 31121 7-Oct 31122 7-Oct 31123 7-Oct 31124 7-Oct 31125 7-Oct 31126 7-Oct 31127 7-Oct 31128 7-Oct 31129 7-Oct 31130 7-Oct 31131 7-Oct 31132 7-Oct 31133 7-Oct 31134 7-Oct 31135 7-Oct 31136 7-Oct 31137 7-Oct 31138 7-Oct 31139 7-Oct 31140 7-Oct 31141 7-Oct 31142 7-Oct 31143 7-Oct 31144 7-Oct 31145 7-Oct 31146 7-Oct 31147 7-Oct 31148 7-Oct 31149 7-Oct 31150 7-Oct 31151 7-Oct 31152 7-Oct 31153 7-Oct 31154 7-Oct 31155 7-Oct 31156 7-Oct 31157 7-Oct 31158 7-Oct 31159 7-Oct 31160 7-Oct 31161 7-Oct 31162 7-Oct 31163 7-Oct 31164 7-Oct 31165 7-Oct 31166 7-Oct 31167 7-Oct 31168 7-Oct 31169 7-Oct 31170 7-Oct 31171 7-Oct 31172 7-Oct 31173 7-Oct 31174 7-Oct 31175 7-Oct 31176 7-Oct 31177 7-Oct 31178 7-Oct 31179 7-Oct 31180 7-Oct 31181 7-Oct 31182 7-Oct 31183 7-Oct 31184 7-Oct 31185 7-Oct 31186 7-Oct 31187 7-Oct 31188 7-Oct 31189 7-Oct 31190 7-Oct 31191 7-Oct 31192 7-Oct 31193 7-Oct 31194 7-Oct 31195 7-Oct 31196 7-Oct 31197 7-Oct 31198 7-Oct 31199 7-Oct 31200 7-Oct 31201 7-Oct 31202 7-Oct 31203 7-Oct 31204 7-Oct 31205 7-Oct 31206 7-Oct 31207 7-Oct 31208 7-Oct 31209 7-Oct 31210 7-Oct 31211 7-Oct 31212 7-Oct 31213 7-Oct 31214 7-Oct 31215 7-Oct 31216 7-Oct 31217 7-Oct 31218 7-Oct 31219 7-Oct 31220 7-Oct 31221 7-Oct 31222 7-Oct 31223 7-Oct 31224 7-Oct 31225 7-Oct 31226 7-Oct 31227 7-Oct 31228 7-Oct 31229 7-Oct 31230 7-Oct 31231 7-Oct 31232 7-Sep 31233 7-Sep 31234 7-Sep 31235 7-Sep 31236 7-Sep 31237 7-Sep 31238 7-Sep 31239 7-Sep 31240 7-Sep 31241 7-Sep 31242 7-Sep 31243 7-Sep 31244 7-Sep 31245 7-Sep 31246 7-Sep 31247 7-Sep 31248 7-Sep 31249 7-Sep 31250 7-Sep 31251 7-Sep 31252 7-Sep 31253 7-Sep 31254 7-Sep 31255 7-Sep 31256 7-Sep 31257 7-Sep 31258 7-Sep 31259 7-Sep 31260 7-Sep 31261 7-Sep 31262 7-Sep 31263 7-Sep 31264 7-Sep 31265 7-Sep 31266 7-Sep 31267 7-Sep 31268 7-Sep 31269 7-Sep 31270 7-Sep 31271 7-Sep 31272 7-Sep 31273 7-Sep 31274 7-Sep 31275 7-Sep 31276 7-Sep 31277 7-Sep 31278 7-Sep 31279 7-Sep 31280 7-Sep 31281 7-Sep 31282 7-Sep 31283 7-Sep 31284 7-Sep 31285 7-Sep 31286 7-Sep 31287 7-Sep 31288 7-Sep 31289 7-Sep 31290 7-Sep 31291 7-Sep 31292 7-Sep 31293 7-Sep 31294 7-Sep 31295 7-Sep 31296 7-Sep 31297 7-Sep 31298 7-Sep 31299 7-Sep 31300 7-Sep 31301 7-Sep 31302 7-Sep 31303 7-Sep 31304 7-Sep 31305 7-Sep 31306 7-Sep 31307 7-Sep 31308 7-Sep 31309 7-Sep 31310 7-Sep 31311 7-Sep 31312 7-Sep 31313 7-Sep 31314 7-Sep 31315 7-Sep 31316 7-Sep 31317 7-Sep 31318 7-Sep 31319 7-Sep 31320 7-Sep 31321 7-Sep 31322 7-Sep 31323 7-Sep 31324 7-Sep 31325 7-Sep 31326 7-Sep 31327 7-Sep 31328 7-Sep 31329 7-Sep 31330 7-Sep 31331 7-Sep 31332 7-Sep 31333 7-Sep 31334 7-Sep 31335 7-Sep 31336 7-Sep 31337 7-Sep 31338 7-Sep 31339 7-Sep 31340 7-Sep 31341 7-Sep 31342 7-Sep 31343 7-Sep 31344 7-Sep 31345 7-Sep 31346 7-Sep 31347 7-Sep 31348 7-Sep 31349 7-Sep 31350 7-Sep 31351 7-Sep 31352 7-Sep 31353 7-Sep 31354 7-Sep 31355 7-Sep 31356 7-Sep 31357 7-Sep 31358 7-Sep 31359 7-Sep 31360 7-Sep 31361 7-Sep 31362 7-Sep 31363 7-Sep 31364 7-Sep 31365 7-Sep 31366 7-Sep 31367 7-Sep 31368 7-Sep 31369 7-Sep 31370 7-Sep 31371 7-Sep 31372 7-Sep 31373 7-Sep 31374 7-Sep 31375 7-Sep 31376 7-Sep 31377 7-Sep 31378 7-Sep 31379 7-Sep 31380 7-Sep 31381 7-Sep 31382 7-Sep 31383 7-Sep 31384 7-Sep 31385 7-Sep 31386 7-Sep 31387 7-Sep 31388 7-Sep 31389 7-Sep 31390 7-Sep 31391 7-Sep 31392 7-Sep 31393 7-Sep 31394 7-Sep 31395 7-Sep 31396 7-Sep 31397 7-Sep 31398 7-Sep 31399 7-Sep 31400 7-Sep 31401 7-Sep 31402 7-Sep 31403 7-Sep 31404 7-Sep 31405 7-Sep 31406 7-Sep 31407 7-Sep 31408 7-Sep 31409 7-Sep 31410 7-Sep 31411 7-Sep 31412 7-Sep 31413 7-Sep 31414 7-Sep 31415 7-Sep 31416 7-Sep 31417 7-Sep 31418 7-Sep 31419 7-Sep 31420 7-Sep 31421 7-Sep 31422 7-Sep 31423 7-Sep 31424 7-Sep 31425 7-Sep 31426 7-Sep 31427 7-Sep 31428 7-Sep 31429 7-Sep 31430 7-Sep 31431 7-Sep 31432 7-Sep 31433 7-Sep 31434 7-Sep 31435 7-Sep 31436 7-Sep 31437 7-Sep 31438 7-Sep 31439 7-Sep 31440 7-Sep 31441 7-Sep 31442 7-Sep 31443 7-Sep 31444 7-Sep 31445 7-Sep 31446 7-Sep 31447 7-Sep 31448 7-Sep 31449 8-Apr 31450 8-Apr 31451 8-Apr 31452 8-Apr 31453 8-Apr 31454 8-Apr 31455 8-Apr 31456 8-Apr 31457 8-Apr 31458 8-Apr 31459 8-Apr 31460 8-Apr 31461 8-Apr 31462 8-Apr 31463 8-Apr 31464 8-Apr 31465 8-Apr 31466 8-Apr 31467 8-Apr 31468 8-Apr 31469 8-Apr 31470 8-Apr 31471 8-Apr 31472 8-Apr 31473 8-Apr 31474 8-Apr 31475 8-Apr 31476 8-Apr 31477 8-Apr 31478 8-Apr 31479 8-Apr 31480 8-Apr 31481 8-Apr 31482 8-Apr 31483 8-Apr 31484 8-Apr 31485 8-Apr 31486 8-Apr 31487 8-Apr 31488 8-Apr 31489 8-Apr 31490 8-Apr 31491 8-Apr 31492 8-Apr 31493 8-Apr 31494 8-Apr 31495 8-Apr 31496 8-Apr 31497 8-Apr 31498 8-Apr 31499 8-Apr 31500 8-Apr 31501 8-Apr 31502 8-Apr 31503 8-Apr 31504 8-Apr 31505 8-Apr 31506 8-Apr 31507 8-Apr 31508 8-Apr 31509 8-Apr 31510 8-Apr 31511 8-Apr 31512 8-Apr 31513 8-Apr 31514 8-Apr 31515 8-Apr 31516 8-Apr 31517 8-Apr 31518 8-Apr 31519 8-Apr 31520 8-Apr 31521 8-Apr 31522 8-Apr 31523 8-Apr 31524 8-Apr 31525 8-Apr 31526 8-Apr 31527 8-Apr 31528 8-Apr 31529 8-Apr 31530 8-Apr 31531 8-Apr 31532 8-Apr 31533 8-Apr 31534 8-Apr 31535 8-Apr 31536 8-Apr 31537 8-Apr 31538 8-Apr 31539 8-Apr 31540 8-Apr 31541 8-Apr 31542 8-Apr 31543 8-Apr 31544 8-Apr 31545 8-Apr 31546 8-Apr 31547 8-Apr 31548 8-Apr 31549 8-Apr 31550 8-Apr 31551 8-Apr 31552 8-Apr 31553 8-Apr 31554 8-Apr 31555 8-Apr 31556 8-Apr 31557 8-Apr 31558 8-Apr 31559 8-Apr 31560 8-Apr 31561 8-Apr 31562 8-Apr 31563 8-Apr 31564 8-Apr 31565 8-Apr 31566 8-Apr 31567 8-Apr 31568 8-Apr 31569 8-Apr 31570 8-Apr 31571 8-Apr 31572 8-Aug 31573 8-Aug 31574 8-Aug 31575 8-Aug 31576 8-Aug 31577 8-Aug 31578 8-Aug 31579 8-Aug 31580 8-Aug 31581 8-Aug 31582 8-Aug 31583 8-Aug 31584 8-Aug 31585 8-Aug 31586 8-Aug 31587 8-Aug 31588 8-Aug 31589 8-Aug 31590 8-Aug 31591 8-Aug 31592 8-Aug 31593 8-Aug 31594 8-Aug 31595 8-Aug 31596 8-Aug 31597 8-Aug 31598 8-Aug 31599 8-Aug 31600 8-Aug 31601 8-Aug 31602 8-Aug 31603 8-Aug 31604 8-Aug 31605 8-Aug 31606 8-Aug 31607 8-Aug 31608 8-Aug 31609 8-Aug 31610 8-Aug 31611 8-Aug 31612 8-Aug 31613 8-Aug 31614 8-Aug 31615 8-Aug 31616 8-Aug 31617 8-Aug 31618 8-Aug 31619 8-Aug 31620 8-Aug 31621 8-Aug 31622 8-Aug 31623 8-Aug 31624 8-Aug 31625 8-Aug 31626 8-Aug 31627 8-Aug 31628 8-Aug 31629 8-Aug 31630 8-Aug 31631 8-Aug 31632 8-Aug 31633 8-Aug 31634 8-Aug 31635 8-Aug 31636 8-Aug 31637 8-Aug 31638 8-Aug 31639 8-Aug 31640 8-Aug 31641 8-Aug 31642 8-Aug 31643 8-Aug 31644 8-Aug 31645 8-Aug 31646 8-Aug 31647 8-Aug 31648 8-Aug 31649 8-Aug 31650 8-Aug 31651 8-Aug 31652 8-Aug 31653 8-Aug 31654 8-Aug 31655 8-Aug 31656 8-Aug 31657 8-Aug 31658 8-Aug 31659 8-Aug 31660 8-Aug 31661 8-Aug 31662 8-Aug 31663 8-Aug 31664 8-Aug 31665 8-Aug 31666 8-Aug 31667 8-Aug 31668 8-Aug 31669 8-Aug 31670 8-Aug 31671 8-Aug 31672 8-Aug 31673 8-Aug 31674 8-Aug 31675 8-Aug 31676 8-Aug 31677 8-Aug 31678 8-Aug 31679 8-Aug 31680 8-Aug 31681 8-Aug 31682 8-Aug 31683 8-Aug 31684 8-Aug 31685 8-Aug 31686 8-Aug 31687 8-Aug 31688 8-Aug 31689 8-Aug 31690 8-Aug 31691 8-Aug 31692 8-Aug 31693 8-Aug 31694 8-Aug 31695 8-Aug 31696 8-Aug 31697 8-Aug 31698 8-Aug 31699 8-Aug 31700 8-Aug 31701 8-Aug 31702 8-Aug 31703 8-Aug 31704 8-Aug 31705 8-Aug 31706 8-Aug 31707 8-Aug 31708 8-Aug 31709 8-Aug 31710 8-Aug 31711 8-Aug 31712 8-Aug 31713 8-Aug 31714 8-Aug 31715 8-Aug 31716 8-Aug 31717 8-Aug 31718 8-Aug 31719 8-Aug 31720 8-Aug 31721 8-Aug 31722 8-Aug 31723 8-Aug 31724 8-Aug 31725 8-Aug 31726 8-Aug 31727 8-Aug 31728 8-Aug 31729 8-Aug 31730 8-Aug 31731 8-Aug 31732 8-Aug 31733 8-Aug 31734 8-Aug 31735 8-Aug 31736 8-Aug 31737 8-Aug 31738 8-Aug 31739 8-Aug 31740 8-Aug 31741 8-Aug 31742 8-Aug 31743 8-Aug 31744 8-Aug 31745 8-Aug 31746 8-Aug 31747 8-Aug 31748 8-Aug 31749 8-Aug 31750 8-Aug 31751 8-Dec 31752 8-Dec 31753 8-Dec 31754 8-Dec 31755 8-Dec 31756 8-Dec 31757 8-Dec 31758 8-Dec 31759 8-Dec 31760 8-Dec 31761 8-Dec 31762 8-Dec 31763 8-Dec 31764 8-Dec 31765 8-Dec 31766 8-Dec 31767 8-Dec 31768 8-Dec 31769 8-Dec 31770 8-Dec 31771 8-Dec 31772 8-Dec 31773 8-Dec 31774 8-Dec 31775 8-Dec 31776 8-Dec 31777 8-Dec 31778 8-Dec 31779 8-Dec 31780 8-Dec 31781 8-Dec 31782 8-Dec 31783 8-Dec 31784 8-Dec 31785 8-Dec 31786 8-Dec 31787 8-Dec 31788 8-Dec 31789 8-Dec 31790 8-Dec 31791 8-Dec 31792 8-Dec 31793 8-Dec 31794 8-Dec 31795 8-Dec 31796 8-Dec 31797 8-Dec 31798 8-Dec 31799 8-Dec 31800 8-Dec 31801 8-Dec 31802 8-Dec 31803 8-Dec 31804 8-Dec 31805 8-Dec 31806 8-Dec 31807 8-Dec 31808 8-Dec 31809 8-Dec 31810 8-Dec 31811 8-Dec 31812 8-Dec 31813 8-Dec 31814 8-Dec 31815 8-Dec 31816 8-Dec 31817 8-Dec 31818 8-Dec 31819 8-Dec 31820 8-Dec 31821 8-Dec 31822 8-Dec 31823 8-Dec 31824 8-Dec 31825 8-Feb 31826 8-Feb 31827 8-Feb 31828 8-Feb 31829 8-Feb 31830 8-Feb 31831 8-Feb 31832 8-Feb 31833 8-Feb 31834 8-Feb 31835 8-Feb 31836 8-Feb 31837 8-Feb 31838 8-Feb 31839 8-Feb 31840 8-Feb 31841 8-Feb 31842 8-Feb 31843 8-Feb 31844 8-Feb 31845 8-Feb 31846 8-Feb 31847 8-Feb 31848 8-Feb 31849 8-Feb 31850 8-Feb 31851 8-Feb 31852 8-Feb 31853 8-Feb 31854 8-Feb 31855 8-Feb 31856 8-Feb 31857 8-Feb 31858 8-Feb 31859 8-Feb 31860 8-Feb 31861 8-Feb 31862 8-Feb 31863 8-Feb 31864 8-Feb 31865 8-Feb 31866 8-Feb 31867 8-Feb 31868 8-Feb 31869 8-Feb 31870 8-Feb 31871 8-Feb 31872 8-Feb 31873 8-Feb 31874 8-Feb 31875 8-Feb 31876 8-Feb 31877 8-Feb 31878 8-Feb 31879 8-Feb 31880 8-Feb 31881 8-Feb 31882 8-Feb 31883 8-Feb 31884 8-Feb 31885 8-Feb 31886 8-Feb 31887 8-Feb 31888 8-Feb 31889 8-Feb 31890 8-Feb 31891 8-Feb 31892 8-Feb 31893 8-Feb 31894 8-Feb 31895 8-Feb 31896 8-Feb 31897 8-Feb 31898 8-Feb 31899 8-Feb 31900 8-Feb 31901 8-Feb 31902 8-Feb 31903 8-Feb 31904 8-Feb 31905 8-Feb 31906 8-Feb 31907 8-Feb 31908 8-Feb 31909 8-Feb 31910 8-Feb 31911 8-Feb 31912 8-Feb 31913 8-Feb 31914 8-Feb 31915 8-Feb 31916 8-Feb 31917 8-Feb 31918 8-Feb 31919 8-Feb 31920 8-Feb 31921 8-Feb 31922 8-Feb 31923 8-Feb 31924 8-Feb 31925 8-Feb 31926 8-Feb 31927 8-Feb 31928 8-Feb 31929 8-Feb 31930 8-Feb 31931 8-Feb 31932 8-Feb 31933 8-Feb 31934 8-Feb 31935 8-Feb 31936 8-Feb 31937 8-Feb 31938 8-Feb 31939 8-Feb 31940 8-Feb 31941 8-Feb 31942 8-Feb 31943 8-Feb 31944 8-Feb 31945 8-Feb 31946 8-Feb 31947 8-Feb 31948 8-Feb 31949 8-Feb 31950 8-Feb 31951 8-Feb 31952 8-Feb 31953 8-Feb 31954 8-Feb 31955 8-Feb 31956 8-Feb 31957 8-Feb 31958 8-Feb 31959 8-Feb 31960 8-Feb 31961 8-Feb 31962 8-Feb 31963 8-Feb 31964 8-Feb 31965 8-Feb 31966 8-Feb 31967 8-Feb 31968 8-Feb 31969 8-Feb 31970 8-Feb 31971 8-Feb 31972 8-Feb 31973 8-Feb 31974 8-Feb 31975 8-Feb 31976 8-Feb 31977 8-Feb 31978 8-Feb 31979 8-Feb 31980 8-Feb 31981 8-Feb 31982 8-Jan 31983 8-Jan 31984 8-Jan 31985 8-Jan 31986 8-Jan 31987 8-Jan 31988 8-Jan 31989 8-Jan 31990 8-Jan 31991 8-Jan 31992 8-Jan 31993 8-Jan 31994 8-Jan 31995 8-Jan 31996 8-Jan 31997 8-Jan 31998 8-Jan 31999 8-Jan 32000 8-Jan 32001 8-Jan 32002 8-Jan 32003 8-Jan 32004 8-Jan 32005 8-Jan 32006 8-Jan 32007 8-Jan 32008 8-Jan 32009 8-Jan 32010 8-Jan 32011 8-Jan 32012 8-Jan 32013 8-Jan 32014 8-Jan 32015 8-Jan 32016 8-Jan 32017 8-Jan 32018 8-Jan 32019 8-Jan 32020 8-Jan 32021 8-Jan 32022 8-Jan 32023 8-Jan 32024 8-Jan 32025 8-Jan 32026 8-Jan 32027 8-Jan 32028 8-Jan 32029 8-Jan 32030 8-Jan 32031 8-Jan 32032 8-Jan 32033 8-Jan 32034 8-Jan 32035 8-Jan 32036 8-Jan 32037 8-Jan 32038 8-Jan 32039 8-Jan 32040 8-Jan 32041 8-Jan 32042 8-Jan 32043 8-Jan 32044 8-Jan 32045 8-Jan 32046 8-Jan 32047 8-Jan 32048 8-Jan 32049 8-Jan 32050 8-Jan 32051 8-Jan 32052 8-Jan 32053 8-Jan 32054 8-Jan 32055 8-Jan 32056 8-Jan 32057 8-Jan 32058 8-Jan 32059 8-Jan 32060 8-Jan 32061 8-Jan 32062 8-Jan 32063 8-Jan 32064 8-Jan 32065 8-Jan 32066 8-Jan 32067 8-Jan 32068 8-Jan 32069 8-Jan 32070 8-Jan 32071 8-Jan 32072 8-Jan 32073 8-Jan 32074 8-Jan 32075 8-Jan 32076 8-Jan 32077 8-Jan 32078 8-Jan 32079 8-Jan 32080 8-Jan 32081 8-Jan 32082 8-Jan 32083 8-Jan 32084 8-Jan 32085 8-Jan 32086 8-Jan 32087 8-Jan 32088 8-Jan 32089 8-Jan 32090 8-Jan 32091 8-Jan 32092 8-Jan 32093 8-Jan 32094 8-Jan 32095 8-Jan 32096 8-Jan 32097 8-Jan 32098 8-Jan 32099 8-Jan 32100 8-Jan 32101 8-Jan 32102 8-Jan 32103 8-Jan 32104 8-Jan 32105 8-Jan 32106 8-Jan 32107 8-Jan 32108 8-Jan 32109 8-Jan 32110 8-Jan 32111 8-Jan 32112 8-Jan 32113 8-Jan 32114 8-Jan 32115 8-Jul 32116 8-Jul 32117 8-Jul 32118 8-Jul 32119 8-Jul 32120 8-Jul 32121 8-Jul 32122 8-Jul 32123 8-Jul 32124 8-Jul 32125 8-Jul 32126 8-Jul 32127 8-Jul 32128 8-Jul 32129 8-Jul 32130 8-Jul 32131 8-Jul 32132 8-Jul 32133 8-Jul 32134 8-Jul 32135 8-Jul 32136 8-Jul 32137 8-Jul 32138 8-Jul 32139 8-Jul 32140 8-Jul 32141 8-Jul 32142 8-Jul 32143 8-Jul 32144 8-Jul 32145 8-Jul 32146 8-Jul 32147 8-Jul 32148 8-Jul 32149 8-Jul 32150 8-Jul 32151 8-Jul 32152 8-Jul 32153 8-Jul 32154 8-Jul 32155 8-Jul 32156 8-Jul 32157 8-Jul 32158 8-Jul 32159 8-Jul 32160 8-Jul 32161 8-Jul 32162 8-Jul 32163 8-Jul 32164 8-Jul 32165 8-Jul 32166 8-Jul 32167 8-Jul 32168 8-Jul 32169 8-Jul 32170 8-Jul 32171 8-Jul 32172 8-Jul 32173 8-Jul 32174 8-Jul 32175 8-Jul 32176 8-Jul 32177 8-Jul 32178 8-Jul 32179 8-Jul 32180 8-Jul 32181 8-Jul 32182 8-Jul 32183 8-Jul 32184 8-Jul 32185 8-Jul 32186 8-Jul 32187 8-Jul 32188 8-Jul 32189 8-Jul 32190 8-Jul 32191 8-Jul 32192 8-Jul 32193 8-Jul 32194 8-Jul 32195 8-Jul 32196 8-Jul 32197 8-Jul 32198 8-Jul 32199 8-Jul 32200 8-Jul 32201 8-Jul 32202 8-Jul 32203 8-Jul 32204 8-Jul 32205 8-Jul 32206 8-Jul 32207 8-Jul 32208 8-Jul 32209 8-Jul 32210 8-Jul 32211 8-Jul 32212 8-Jul 32213 8-Jul 32214 8-Jul 32215 8-Jul 32216 8-Jul 32217 8-Jul 32218 8-Jul 32219 8-Jul 32220 8-Jul 32221 8-Jul 32222 8-Jul 32223 8-Jul 32224 8-Jul 32225 8-Jul 32226 8-Jul 32227 8-Jul 32228 8-Jul 32229 8-Jul 32230 8-Jul 32231 8-Jul 32232 8-Jul 32233 8-Jul 32234 8-Jul 32235 8-Jul 32236 8-Jul 32237 8-Jul 32238 8-Jul 32239 8-Jul 32240 8-Jul 32241 8-Jul 32242 8-Jul 32243 8-Jul 32244 8-Jul 32245 8-Jul 32246 8-Jul 32247 8-Jul 32248 8-Jul 32249 8-Jul 32250 8-Jul 32251 8-Jul 32252 8-Jul 32253 8-Jul 32254 8-Jul 32255 8-Jul 32256 8-Jul 32257 8-Jul 32258 8-Jul 32259 8-Jun 32260 8-Jun 32261 8-Jun 32262 8-Jun 32263 8-Jun 32264 8-Jun 32265 8-Jun 32266 8-Jun 32267 8-Jun 32268 8-Jun 32269 8-Jun 32270 8-Jun 32271 8-Jun 32272 8-Jun 32273 8-Jun 32274 8-Jun 32275 8-Jun 32276 8-Jun 32277 8-Jun 32278 8-Jun 32279 8-Jun 32280 8-Jun 32281 8-Jun 32282 8-Jun 32283 8-Jun 32284 8-Jun 32285 8-Jun 32286 8-Jun 32287 8-Jun 32288 8-Jun 32289 8-Jun 32290 8-Jun 32291 8-Jun 32292 8-Jun 32293 8-Jun 32294 8-Jun 32295 8-Jun 32296 8-Jun 32297 8-Jun 32298 8-Jun 32299 8-Jun 32300 8-Jun 32301 8-Jun 32302 8-Jun 32303 8-Jun 32304 8-Jun 32305 8-Jun 32306 8-Jun 32307 8-Jun 32308 8-Jun 32309 8-Jun 32310 8-Jun 32311 8-Jun 32312 8-Jun 32313 8-Jun 32314 8-Jun 32315 8-Jun 32316 8-Jun 32317 8-Jun 32318 8-Jun 32319 8-Jun 32320 8-Jun 32321 8-Jun 32322 8-Jun 32323 8-Jun 32324 8-Jun 32325 8-Jun 32326 8-Jun 32327 8-Jun 32328 8-Jun 32329 8-Jun 32330 8-Jun 32331 8-Jun 32332 8-Jun 32333 8-Jun 32334 8-Jun 32335 8-Jun 32336 8-Jun 32337 8-Jun 32338 8-Jun 32339 8-Jun 32340 8-Jun 32341 8-Jun 32342 8-Jun 32343 8-Jun 32344 8-Jun 32345 8-Jun 32346 8-Jun 32347 8-Jun 32348 8-Jun 32349 8-Jun 32350 8-Jun 32351 8-Jun 32352 8-Jun 32353 8-Jun 32354 8-Jun 32355 8-Jun 32356 8-Jun 32357 8-Jun 32358 8-Jun 32359 8-Jun 32360 8-Jun 32361 8-Jun 32362 8-Jun 32363 8-Jun 32364 8-Jun 32365 8-Jun 32366 8-Jun 32367 8-Jun 32368 8-Jun 32369 8-Jun 32370 8-Jun 32371 8-Jun 32372 8-Jun 32373 8-Jun 32374 8-Jun 32375 8-Jun 32376 8-Jun 32377 8-Jun 32378 8-Jun 32379 8-Jun 32380 8-Jun 32381 8-Jun 32382 8-Jun 32383 8-Jun 32384 8-Mar 32385 8-Mar 32386 8-Mar 32387 8-Mar 32388 8-Mar 32389 8-Mar 32390 8-Mar 32391 8-Mar 32392 8-Mar 32393 8-Mar 32394 8-Mar 32395 8-Mar 32396 8-Mar 32397 8-Mar 32398 8-Mar 32399 8-Mar 32400 8-Mar 32401 8-Mar 32402 8-Mar 32403 8-Mar 32404 8-Mar 32405 8-Mar 32406 8-Mar 32407 8-Mar 32408 8-Mar 32409 8-Mar 32410 8-Mar 32411 8-Mar 32412 8-Mar 32413 8-Mar 32414 8-Mar 32415 8-Mar 32416 8-Mar 32417 8-Mar 32418 8-Mar 32419 8-Mar 32420 8-Mar 32421 8-Mar 32422 8-Mar 32423 8-Mar 32424 8-Mar 32425 8-Mar 32426 8-Mar 32427 8-Mar 32428 8-Mar 32429 8-Mar 32430 8-Mar 32431 8-Mar 32432 8-Mar 32433 8-Mar 32434 8-Mar 32435 8-Mar 32436 8-Mar 32437 8-Mar 32438 8-Mar 32439 8-Mar 32440 8-Mar 32441 8-Mar 32442 8-Mar 32443 8-Mar 32444 8-Mar 32445 8-Mar 32446 8-Mar 32447 8-Mar 32448 8-Mar 32449 8-Mar 32450 8-Mar 32451 8-Mar 32452 8-Mar 32453 8-Mar 32454 8-Mar 32455 8-Mar 32456 8-Mar 32457 8-Mar 32458 8-Mar 32459 8-Mar 32460 8-Mar 32461 8-Mar 32462 8-Mar 32463 8-Mar 32464 8-Mar 32465 8-Mar 32466 8-Mar 32467 8-Mar 32468 8-Mar 32469 8-Mar 32470 8-Mar 32471 8-Mar 32472 8-Mar 32473 8-Mar 32474 8-Mar 32475 8-Mar 32476 8-Mar 32477 8-Mar 32478 8-Mar 32479 8-Mar 32480 8-Mar 32481 8-Mar 32482 8-Mar 32483 8-Mar 32484 8-Mar 32485 8-Mar 32486 8-Mar 32487 8-Mar 32488 8-Mar 32489 8-Mar 32490 8-Mar 32491 8-Mar 32492 8-Mar 32493 8-Mar 32494 8-Mar 32495 8-Mar 32496 8-Mar 32497 8-Mar 32498 8-Mar 32499 8-Mar 32500 8-Mar 32501 8-Mar 32502 8-Mar 32503 8-Mar 32504 8-Mar 32505 8-May 32506 8-May 32507 8-May 32508 8-May 32509 8-May 32510 8-May 32511 8-May 32512 8-May 32513 8-May 32514 8-May 32515 8-May 32516 8-May 32517 8-May 32518 8-May 32519 8-May 32520 8-May 32521 8-May 32522 8-May 32523 8-May 32524 8-May 32525 8-May 32526 8-May 32527 8-May 32528 8-May 32529 8-May 32530 8-May 32531 8-May 32532 8-May 32533 8-May 32534 8-May 32535 8-May 32536 8-May 32537 8-May 32538 8-May 32539 8-May 32540 8-May 32541 8-May 32542 8-May 32543 8-May 32544 8-May 32545 8-May 32546 8-May 32547 8-May 32548 8-May 32549 8-May 32550 8-May 32551 8-May 32552 8-May 32553 8-May 32554 8-May 32555 8-May 32556 8-May 32557 8-May 32558 8-May 32559 8-May 32560 8-May 32561 8-May 32562 8-May 32563 8-May 32564 8-May 32565 8-May 32566 8-May 32567 8-May 32568 8-May 32569 8-May 32570 8-May 32571 8-May 32572 8-May 32573 8-May 32574 8-May 32575 8-May 32576 8-May 32577 8-May 32578 8-May 32579 8-May 32580 8-May 32581 8-May 32582 8-May 32583 8-May 32584 8-May 32585 8-May 32586 8-May 32587 8-May 32588 8-May 32589 8-May 32590 8-May 32591 8-May 32592 8-May 32593 8-May 32594 8-May 32595 8-May 32596 8-May 32597 8-May 32598 8-May 32599 8-May 32600 8-May 32601 8-May 32602 8-May 32603 8-May 32604 8-May 32605 8-May 32606 8-May 32607 8-May 32608 8-May 32609 8-May 32610 8-May 32611 8-May 32612 8-May 32613 8-May 32614 8-May 32615 8-May 32616 8-May 32617 8-May 32618 8-May 32619 8-May 32620 8-May 32621 8-May 32622 8-May 32623 8-May 32624 8-May 32625 8-May 32626 8-May 32627 8-May 32628 8-Nov 32629 8-Nov 32630 8-Nov 32631 8-Nov 32632 8-Nov 32633 8-Nov 32634 8-Nov 32635 8-Nov 32636 8-Nov 32637 8-Nov 32638 8-Nov 32639 8-Nov 32640 8-Nov 32641 8-Nov 32642 8-Nov 32643 8-Nov 32644 8-Nov 32645 8-Nov 32646 8-Nov 32647 8-Nov 32648 8-Nov 32649 8-Nov 32650 8-Nov 32651 8-Nov 32652 8-Nov 32653 8-Nov 32654 8-Nov 32655 8-Nov 32656 8-Nov 32657 8-Nov 32658 8-Nov 32659 8-Nov 32660 8-Nov 32661 8-Nov 32662 8-Nov 32663 8-Nov 32664 8-Nov 32665 8-Nov 32666 8-Nov 32667 8-Nov 32668 8-Nov 32669 8-Nov 32670 8-Nov 32671 8-Nov 32672 8-Nov 32673 8-Nov 32674 8-Nov 32675 8-Nov 32676 8-Nov 32677 8-Nov 32678 8-Nov 32679 8-Nov 32680 8-Nov 32681 8-Nov 32682 8-Nov 32683 8-Nov 32684 8-Nov 32685 8-Nov 32686 8-Nov 32687 8-Nov 32688 8-Nov 32689 8-Nov 32690 8-Nov 32691 8-Nov 32692 8-Nov 32693 8-Nov 32694 8-Nov 32695 8-Nov 32696 8-Nov 32697 8-Nov 32698 8-Nov 32699 8-Nov 32700 8-Nov 32701 8-Nov 32702 8-Nov 32703 8-Nov 32704 8-Nov 32705 8-Nov 32706 8-Nov 32707 8-Nov 32708 8-Nov 32709 8-Nov 32710 8-Nov 32711 8-Nov 32712 8-Nov 32713 8-Nov 32714 8-Nov 32715 8-Nov 32716 8-Nov 32717 8-Nov 32718 8-Nov 32719 8-Nov 32720 8-Nov 32721 8-Nov 32722 8-Nov 32723 8-Nov 32724 8-Nov 32725 8-Nov 32726 8-Nov 32727 8-Nov 32728 8-Oct 32729 8-Oct 32730 8-Oct 32731 8-Oct 32732 8-Oct 32733 8-Oct 32734 8-Oct 32735 8-Oct 32736 8-Oct 32737 8-Oct 32738 8-Oct 32739 8-Oct 32740 8-Oct 32741 8-Oct 32742 8-Oct 32743 8-Oct 32744 8-Oct 32745 8-Oct 32746 8-Oct 32747 8-Oct 32748 8-Oct 32749 8-Oct 32750 8-Oct 32751 8-Oct 32752 8-Oct 32753 8-Oct 32754 8-Oct 32755 8-Oct 32756 8-Oct 32757 8-Oct 32758 8-Oct 32759 8-Oct 32760 8-Oct 32761 8-Oct 32762 8-Oct 32763 8-Oct 32764 8-Oct 32765 8-Oct 32766 8-Oct 32767 8-Oct 32768 8-Oct 32769 8-Oct 32770 8-Oct 32771 8-Oct 32772 8-Oct 32773 8-Oct 32774 8-Oct 32775 8-Oct 32776 8-Oct 32777 8-Oct 32778 8-Oct 32779 8-Oct 32780 8-Oct 32781 8-Oct 32782 8-Oct 32783 8-Oct 32784 8-Oct 32785 8-Oct 32786 8-Oct 32787 8-Oct 32788 8-Oct 32789 8-Oct 32790 8-Oct 32791 8-Oct 32792 8-Oct 32793 8-Oct 32794 8-Oct 32795 8-Oct 32796 8-Oct 32797 8-Oct 32798 8-Oct 32799 8-Oct 32800 8-Oct 32801 8-Oct 32802 8-Oct 32803 8-Oct 32804 8-Oct 32805 8-Oct 32806 8-Oct 32807 8-Oct 32808 8-Oct 32809 8-Oct 32810 8-Oct 32811 8-Oct 32812 8-Oct 32813 8-Oct 32814 8-Oct 32815 8-Oct 32816 8-Oct 32817 8-Oct 32818 8-Oct 32819 8-Oct 32820 8-Oct 32821 8-Oct 32822 8-Oct 32823 8-Oct 32824 8-Oct 32825 8-Oct 32826 8-Oct 32827 8-Oct 32828 8-Oct 32829 8-Oct 32830 8-Oct 32831 8-Oct 32832 8-Oct 32833 8-Oct 32834 8-Oct 32835 8-Oct 32836 8-Oct 32837 8-Oct 32838 8-Oct 32839 8-Oct 32840 8-Oct 32841 8-Oct 32842 8-Oct 32843 8-Oct 32844 8-Oct 32845 8-Oct 32846 8-Oct 32847 8-Oct 32848 8-Oct 32849 8-Oct 32850 8-Oct 32851 8-Oct 32852 8-Oct 32853 8-Oct 32854 8-Oct 32855 8-Sep 32856 8-Sep 32857 8-Sep 32858 8-Sep 32859 8-Sep 32860 8-Sep 32861 8-Sep 32862 8-Sep 32863 8-Sep 32864 8-Sep 32865 8-Sep 32866 8-Sep 32867 8-Sep 32868 8-Sep 32869 8-Sep 32870 8-Sep 32871 8-Sep 32872 8-Sep 32873 8-Sep 32874 8-Sep 32875 8-Sep 32876 8-Sep 32877 8-Sep 32878 8-Sep 32879 8-Sep 32880 8-Sep 32881 8-Sep 32882 8-Sep 32883 8-Sep 32884 8-Sep 32885 8-Sep 32886 8-Sep 32887 8-Sep 32888 8-Sep 32889 8-Sep 32890 8-Sep 32891 8-Sep 32892 8-Sep 32893 8-Sep 32894 8-Sep 32895 8-Sep 32896 8-Sep 32897 8-Sep 32898 8-Sep 32899 8-Sep 32900 8-Sep 32901 8-Sep 32902 8-Sep 32903 8-Sep 32904 8-Sep 32905 8-Sep 32906 8-Sep 32907 8-Sep 32908 8-Sep 32909 8-Sep 32910 8-Sep 32911 8-Sep 32912 8-Sep 32913 8-Sep 32914 8-Sep 32915 8-Sep 32916 8-Sep 32917 8-Sep 32918 8-Sep 32919 8-Sep 32920 8-Sep 32921 8-Sep 32922 8-Sep 32923 8-Sep 32924 8-Sep 32925 8-Sep 32926 8-Sep 32927 8-Sep 32928 8-Sep 32929 8-Sep 32930 8-Sep 32931 8-Sep 32932 8-Sep 32933 8-Sep 32934 8-Sep 32935 8-Sep 32936 8-Sep 32937 8-Sep 32938 8-Sep 32939 8-Sep 32940 8-Sep 32941 8-Sep 32942 8-Sep 32943 8-Sep 32944 8-Sep 32945 8-Sep 32946 8-Sep 32947 8-Sep 32948 8-Sep 32949 8-Sep 32950 8-Sep 32951 8-Sep 32952 8-Sep 32953 8-Sep 32954 8-Sep 32955 8-Sep 32956 8-Sep 32957 8-Sep 32958 8-Sep 32959 8-Sep 32960 8-Sep 32961 8-Sep 32962 8-Sep 32963 8-Sep 32964 8-Sep 32965 8-Sep 32966 8-Sep 32967 8-Sep 32968 8-Sep 32969 8-Sep 32970 8-Sep 32971 8-Sep 32972 8-Sep 32973 8-Sep 32974 8-Sep 32975 8-Sep 32976 8-Sep 32977 8-Sep 32978 8-Sep 32979 8-Sep 32980 8-Sep 32981 8-Sep 32982 8-Sep 32983 8-Sep 32984 8-Sep 32985 8-Sep 32986 8-Sep 32987 8-Sep 32988 8-Sep 32989 8-Sep 32990 8-Sep 32991 8-Sep 32992 8-Sep 32993 8-Sep 32994 8-Sep 32995 8-Sep 32996 8-Sep 32997 8-Sep 32998 8-Sep 32999 8-Sep 33000 8-Sep 33001 8-Sep 33002 8-Sep 33003 8-Sep 33004 8-Sep 33005 8-Sep 33006 8-Sep 33007 8-Sep 33008 8-Sep 33009 8-Sep 33010 8-Sep 33011 8-Sep 33012 8-Sep 33013 8-Sep 33014 8-Sep 33015 8-Sep 33016 8-Sep 33017 8-Sep 33018 8-Sep 33019 8-Sep 33020 8-Sep 33021 8-Sep 33022 8-Sep 33023 8-Sep 33024 8-Sep 33025 8-Sep 33026 8-Sep 33027 8-Sep 33028 8-Sep 33029 8-Sep 33030 8-Sep 33031 8-Sep 33032 9-Apr 33033 9-Apr 33034 9-Apr 33035 9-Apr 33036 9-Apr 33037 9-Apr 33038 9-Apr 33039 9-Apr 33040 9-Apr 33041 9-Apr 33042 9-Apr 33043 9-Apr 33044 9-Apr 33045 9-Apr 33046 9-Apr 33047 9-Apr 33048 9-Apr 33049 9-Apr 33050 9-Apr 33051 9-Apr 33052 9-Apr 33053 9-Apr 33054 9-Apr 33055 9-Apr 33056 9-Apr 33057 9-Apr 33058 9-Apr 33059 9-Apr 33060 9-Apr 33061 9-Apr 33062 9-Apr 33063 9-Apr 33064 9-Apr 33065 9-Apr 33066 9-Apr 33067 9-Apr 33068 9-Apr 33069 9-Apr 33070 9-Apr 33071 9-Apr 33072 9-Apr 33073 9-Apr 33074 9-Apr 33075 9-Apr 33076 9-Apr 33077 9-Apr 33078 9-Apr 33079 9-Apr 33080 9-Apr 33081 9-Apr 33082 9-Apr 33083 9-Apr 33084 9-Apr 33085 9-Apr 33086 9-Apr 33087 9-Apr 33088 9-Apr 33089 9-Apr 33090 9-Apr 33091 9-Apr 33092 9-Apr 33093 9-Apr 33094 9-Apr 33095 9-Apr 33096 9-Apr 33097 9-Apr 33098 9-Apr 33099 9-Apr 33100 9-Apr 33101 9-Apr 33102 9-Apr 33103 9-Apr 33104 9-Apr 33105 9-Apr 33106 9-Apr 33107 9-Apr 33108 9-Apr 33109 9-Apr 33110 9-Apr 33111 9-Apr 33112 9-Apr 33113 9-Apr 33114 9-Apr 33115 9-Aug 33116 9-Aug 33117 9-Aug 33118 9-Aug 33119 9-Aug 33120 9-Aug 33121 9-Aug 33122 9-Aug 33123 9-Aug 33124 9-Aug 33125 9-Aug 33126 9-Aug 33127 9-Aug 33128 9-Aug 33129 9-Aug 33130 9-Aug 33131 9-Aug 33132 9-Aug 33133 9-Aug 33134 9-Aug 33135 9-Aug 33136 9-Aug 33137 9-Aug 33138 9-Aug 33139 9-Aug 33140 9-Aug 33141 9-Aug 33142 9-Aug 33143 9-Aug 33144 9-Aug 33145 9-Aug 33146 9-Aug 33147 9-Aug 33148 9-Aug 33149 9-Aug 33150 9-Aug 33151 9-Aug 33152 9-Aug 33153 9-Aug 33154 9-Aug 33155 9-Aug 33156 9-Aug 33157 9-Aug 33158 9-Aug 33159 9-Aug 33160 9-Aug 33161 9-Aug 33162 9-Aug 33163 9-Aug 33164 9-Aug 33165 9-Aug 33166 9-Aug 33167 9-Aug 33168 9-Aug 33169 9-Aug 33170 9-Aug 33171 9-Aug 33172 9-Aug 33173 9-Aug 33174 9-Aug 33175 9-Aug 33176 9-Aug 33177 9-Aug 33178 9-Aug 33179 9-Aug 33180 9-Aug 33181 9-Aug 33182 9-Aug 33183 9-Aug 33184 9-Aug 33185 9-Aug 33186 9-Aug 33187 9-Aug 33188 9-Aug 33189 9-Aug 33190 9-Aug 33191 9-Aug 33192 9-Aug 33193 9-Aug 33194 9-Aug 33195 9-Aug 33196 9-Aug 33197 9-Aug 33198 9-Aug 33199 9-Aug 33200 9-Aug 33201 9-Aug 33202 9-Aug 33203 9-Aug 33204 9-Aug 33205 9-Aug 33206 9-Aug 33207 9-Aug 33208 9-Aug 33209 9-Aug 33210 9-Aug 33211 9-Aug 33212 9-Aug 33213 9-Aug 33214 9-Aug 33215 9-Aug 33216 9-Aug 33217 9-Aug 33218 9-Aug 33219 9-Aug 33220 9-Aug 33221 9-Aug 33222 9-Aug 33223 9-Aug 33224 9-Aug 33225 9-Aug 33226 9-Aug 33227 9-Aug 33228 9-Dec 33229 9-Dec 33230 9-Dec 33231 9-Dec 33232 9-Dec 33233 9-Dec 33234 9-Dec 33235 9-Dec 33236 9-Dec 33237 9-Dec 33238 9-Dec 33239 9-Dec 33240 9-Dec 33241 9-Dec 33242 9-Dec 33243 9-Dec 33244 9-Dec 33245 9-Dec 33246 9-Dec 33247 9-Dec 33248 9-Dec 33249 9-Dec 33250 9-Dec 33251 9-Dec 33252 9-Dec 33253 9-Dec 33254 9-Dec 33255 9-Dec 33256 9-Dec 33257 9-Dec 33258 9-Dec 33259 9-Dec 33260 9-Dec 33261 9-Dec 33262 9-Dec 33263 9-Dec 33264 9-Dec 33265 9-Dec 33266 9-Dec 33267 9-Dec 33268 9-Dec 33269 9-Dec 33270 9-Dec 33271 9-Dec 33272 9-Dec 33273 9-Dec 33274 9-Dec 33275 9-Dec 33276 9-Dec 33277 9-Dec 33278 9-Dec 33279 9-Dec 33280 9-Dec 33281 9-Dec 33282 9-Dec 33283 9-Dec 33284 9-Dec 33285 9-Dec 33286 9-Dec 33287 9-Dec 33288 9-Dec 33289 9-Dec 33290 9-Dec 33291 9-Dec 33292 9-Dec 33293 9-Dec 33294 9-Dec 33295 9-Dec 33296 9-Dec 33297 9-Dec 33298 9-Dec 33299 9-Dec 33300 9-Dec 33301 9-Dec 33302 9-Dec 33303 9-Dec 33304 9-Feb 33305 9-Feb 33306 9-Feb 33307 9-Feb 33308 9-Feb 33309 9-Feb 33310 9-Feb 33311 9-Feb 33312 9-Feb 33313 9-Feb 33314 9-Feb 33315 9-Feb 33316 9-Feb 33317 9-Feb 33318 9-Feb 33319 9-Feb 33320 9-Feb 33321 9-Feb 33322 9-Feb 33323 9-Feb 33324 9-Feb 33325 9-Feb 33326 9-Feb 33327 9-Feb 33328 9-Feb 33329 9-Feb 33330 9-Feb 33331 9-Feb 33332 9-Feb 33333 9-Feb 33334 9-Feb 33335 9-Feb 33336 9-Feb 33337 9-Feb 33338 9-Feb 33339 9-Feb 33340 9-Feb 33341 9-Feb 33342 9-Feb 33343 9-Feb 33344 9-Feb 33345 9-Feb 33346 9-Feb 33347 9-Feb 33348 9-Feb 33349 9-Feb 33350 9-Feb 33351 9-Feb 33352 9-Feb 33353 9-Feb 33354 9-Feb 33355 9-Feb 33356 9-Feb 33357 9-Feb 33358 9-Feb 33359 9-Feb 33360 9-Feb 33361 9-Feb 33362 9-Feb 33363 9-Feb 33364 9-Feb 33365 9-Feb 33366 9-Feb 33367 9-Feb 33368 9-Feb 33369 9-Feb 33370 9-Feb 33371 9-Feb 33372 9-Feb 33373 9-Feb 33374 9-Feb 33375 9-Feb 33376 9-Feb 33377 9-Feb 33378 9-Feb 33379 9-Feb 33380 9-Feb 33381 9-Jan 33382 9-Jan 33383 9-Jan 33384 9-Jan 33385 9-Jan 33386 9-Jan 33387 9-Jan 33388 9-Jan 33389 9-Jan 33390 9-Jan 33391 9-Jan 33392 9-Jan 33393 9-Jan 33394 9-Jan 33395 9-Jan 33396 9-Jan 33397 9-Jan 33398 9-Jan 33399 9-Jan 33400 9-Jan 33401 9-Jan 33402 9-Jan 33403 9-Jan 33404 9-Jan 33405 9-Jan 33406 9-Jan 33407 9-Jan 33408 9-Jan 33409 9-Jan 33410 9-Jan 33411 9-Jan 33412 9-Jan 33413 9-Jan 33414 9-Jan 33415 9-Jan 33416 9-Jan 33417 9-Jan 33418 9-Jan 33419 9-Jan 33420 9-Jan 33421 9-Jan 33422 9-Jan 33423 9-Jan 33424 9-Jan 33425 9-Jan 33426 9-Jan 33427 9-Jan 33428 9-Jan 33429 9-Jan 33430 9-Jan 33431 9-Jan 33432 9-Jan 33433 9-Jan 33434 9-Jan 33435 9-Jan 33436 9-Jan 33437 9-Jan 33438 9-Jan 33439 9-Jan 33440 9-Jan 33441 9-Jan 33442 9-Jan 33443 9-Jan 33444 9-Jan 33445 9-Jan 33446 9-Jan 33447 9-Jan 33448 9-Jan 33449 9-Jan 33450 9-Jan 33451 9-Jan 33452 9-Jan 33453 9-Jan 33454 9-Jan 33455 9-Jan 33456 9-Jan 33457 9-Jan 33458 9-Jan 33459 9-Jan 33460 9-Jan 33461 9-Jan 33462 9-Jan 33463 9-Jan 33464 9-Jul 33465 9-Jul 33466 9-Jul 33467 9-Jul 33468 9-Jul 33469 9-Jul 33470 9-Jul 33471 9-Jul 33472 9-Jul 33473 9-Jul 33474 9-Jul 33475 9-Jul 33476 9-Jul 33477 9-Jul 33478 9-Jul 33479 9-Jul 33480 9-Jul 33481 9-Jul 33482 9-Jul 33483 9-Jul 33484 9-Jul 33485 9-Jul 33486 9-Jul 33487 9-Jul 33488 9-Jul 33489 9-Jul 33490 9-Jul 33491 9-Jul 33492 9-Jul 33493 9-Jul 33494 9-Jul 33495 9-Jul 33496 9-Jul 33497 9-Jul 33498 9-Jul 33499 9-Jul 33500 9-Jul 33501 9-Jul 33502 9-Jul 33503 9-Jul 33504 9-Jul 33505 9-Jul 33506 9-Jul 33507 9-Jul 33508 9-Jul 33509 9-Jul 33510 9-Jul 33511 9-Jul 33512 9-Jul 33513 9-Jul 33514 9-Jul 33515 9-Jul 33516 9-Jul 33517 9-Jul 33518 9-Jul 33519 9-Jul 33520 9-Jul 33521 9-Jul 33522 9-Jul 33523 9-Jul 33524 9-Jul 33525 9-Jul 33526 9-Jul 33527 9-Jul 33528 9-Jul 33529 9-Jul 33530 9-Jul 33531 9-Jul 33532 9-Jul 33533 9-Jul 33534 9-Jul 33535 9-Jul 33536 9-Jul 33537 9-Jul 33538 9-Jul 33539 9-Jul 33540 9-Jul 33541 9-Jul 33542 9-Jul 33543 9-Jul 33544 9-Jul 33545 9-Jul 33546 9-Jul 33547 9-Jun 33548 9-Jun 33549 9-Jun 33550 9-Jun 33551 9-Jun 33552 9-Jun 33553 9-Jun 33554 9-Jun 33555 9-Jun 33556 9-Jun 33557 9-Jun 33558 9-Jun 33559 9-Jun 33560 9-Jun 33561 9-Jun 33562 9-Jun 33563 9-Jun 33564 9-Jun 33565 9-Jun 33566 9-Jun 33567 9-Jun 33568 9-Jun 33569 9-Jun 33570 9-Jun 33571 9-Jun 33572 9-Jun 33573 9-Jun 33574 9-Jun 33575 9-Jun 33576 9-Jun 33577 9-Jun 33578 9-Jun 33579 9-Jun 33580 9-Jun 33581 9-Jun 33582 9-Jun 33583 9-Jun 33584 9-Jun 33585 9-Jun 33586 9-Jun 33587 9-Jun 33588 9-Jun 33589 9-Jun 33590 9-Jun 33591 9-Jun 33592 9-Jun 33593 9-Jun 33594 9-Jun 33595 9-Jun 33596 9-Jun 33597 9-Jun 33598 9-Jun 33599 9-Jun 33600 9-Jun 33601 9-Jun 33602 9-Jun 33603 9-Jun 33604 9-Jun 33605 9-Jun 33606 9-Mar 33607 9-Mar 33608 9-Mar 33609 9-Mar 33610 9-Mar 33611 9-Mar 33612 9-Mar 33613 9-Mar 33614 9-Mar 33615 9-Mar 33616 9-Mar 33617 9-Mar 33618 9-Mar 33619 9-Mar 33620 9-Mar 33621 9-Mar 33622 9-Mar 33623 9-Mar 33624 9-Mar 33625 9-Mar 33626 9-Mar 33627 9-Mar 33628 9-Mar 33629 9-Mar 33630 9-Mar 33631 9-Mar 33632 9-Mar 33633 9-Mar 33634 9-Mar 33635 9-Mar 33636 9-Mar 33637 9-Mar 33638 9-Mar 33639 9-Mar 33640 9-Mar 33641 9-Mar 33642 9-Mar 33643 9-Mar 33644 9-Mar 33645 9-Mar 33646 9-Mar 33647 9-Mar 33648 9-Mar 33649 9-Mar 33650 9-Mar 33651 9-Mar 33652 9-Mar 33653 9-Mar 33654 9-Mar 33655 9-Mar 33656 9-Mar 33657 9-Mar 33658 9-Mar 33659 9-Mar 33660 9-Mar 33661 9-Mar 33662 9-Mar 33663 9-Mar 33664 9-Mar 33665 9-Mar 33666 9-Mar 33667 9-Mar 33668 9-Mar 33669 9-Mar 33670 9-Mar 33671 9-Mar 33672 9-Mar 33673 9-Mar 33674 9-May 33675 9-May 33676 9-May 33677 9-May 33678 9-May 33679 9-May 33680 9-May 33681 9-May 33682 9-May 33683 9-May 33684 9-May 33685 9-May 33686 9-May 33687 9-May 33688 9-May 33689 9-May 33690 9-May 33691 9-May 33692 9-May 33693 9-May 33694 9-May 33695 9-May 33696 9-May 33697 9-May 33698 9-May 33699 9-May 33700 9-May 33701 9-May 33702 9-May 33703 9-May 33704 9-May 33705 9-May 33706 9-May 33707 9-May 33708 9-May 33709 9-May 33710 9-May 33711 9-May 33712 9-May 33713 9-May 33714 9-May 33715 9-May 33716 9-May 33717 9-May 33718 9-May 33719 9-May 33720 9-May 33721 9-May 33722 9-May 33723 9-May 33724 9-May 33725 9-May 33726 9-May 33727 9-May 33728 9-May 33729 9-May 33730 9-May 33731 9-May 33732 9-May 33733 9-May 33734 9-May 33735 9-May 33736 9-May 33737 9-May 33738 9-May 33739 9-May 33740 9-Nov 33741 9-Nov 33742 9-Nov 33743 9-Nov 33744 9-Nov 33745 9-Nov 33746 9-Nov 33747 9-Nov 33748 9-Nov 33749 9-Nov 33750 9-Nov 33751 9-Nov 33752 9-Nov 33753 9-Nov 33754 9-Nov 33755 9-Nov 33756 9-Nov 33757 9-Nov 33758 9-Nov 33759 9-Nov 33760 9-Nov 33761 9-Nov 33762 9-Nov 33763 9-Nov 33764 9-Nov 33765 9-Nov 33766 9-Nov 33767 9-Nov 33768 9-Nov 33769 9-Nov 33770 9-Nov 33771 9-Nov 33772 9-Nov 33773 9-Nov 33774 9-Nov 33775 9-Nov 33776 9-Nov 33777 9-Nov 33778 9-Nov 33779 9-Nov 33780 9-Nov 33781 9-Nov 33782 9-Nov 33783 9-Nov 33784 9-Nov 33785 9-Nov 33786 9-Nov 33787 9-Nov 33788 9-Nov 33789 9-Nov 33790 9-Nov 33791 9-Nov 33792 9-Nov 33793 9-Nov 33794 9-Nov 33795 9-Nov 33796 9-Nov 33797 9-Nov 33798 9-Nov 33799 9-Nov 33800 9-Nov 33801 9-Nov 33802 9-Nov 33803 9-Nov 33804 9-Nov 33805 9-Nov 33806 9-Nov 33807 9-Nov 33808 9-Oct 33809 9-Oct 33810 9-Oct 33811 9-Oct 33812 9-Oct 33813 9-Oct 33814 9-Oct 33815 9-Oct 33816 9-Oct 33817 9-Oct 33818 9-Oct 33819 9-Oct 33820 9-Oct 33821 9-Oct 33822 9-Oct 33823 9-Oct 33824 9-Oct 33825 9-Oct 33826 9-Oct 33827 9-Oct 33828 9-Oct 33829 9-Oct 33830 9-Oct 33831 9-Oct 33832 9-Oct 33833 9-Oct 33834 9-Oct 33835 9-Oct 33836 9-Oct 33837 9-Oct 33838 9-Oct 33839 9-Oct 33840 9-Oct 33841 9-Oct 33842 9-Oct 33843 9-Oct 33844 9-Oct 33845 9-Oct 33846 9-Oct 33847 9-Oct 33848 9-Oct 33849 9-Oct 33850 9-Oct 33851 9-Oct 33852 9-Oct 33853 9-Oct 33854 9-Oct 33855 9-Oct 33856 9-Oct 33857 9-Oct 33858 9-Oct 33859 9-Oct 33860 9-Oct 33861 9-Oct 33862 9-Oct 33863 9-Oct 33864 9-Oct 33865 9-Oct 33866 9-Oct 33867 9-Oct 33868 9-Oct 33869 9-Oct 33870 9-Oct 33871 9-Oct 33872 9-Oct 33873 9-Oct 33874 9-Oct 33875 9-Oct 33876 9-Oct 33877 9-Oct 33878 9-Oct 33879 9-Oct 33880 9-Oct 33881 9-Oct 33882 9-Oct 33883 9-Oct 33884 9-Oct 33885 9-Oct 33886 9-Oct 33887 9-Oct 33888 9-Oct 33889 9-Oct 33890 9-Oct 33891 9-Oct 33892 9-Oct 33893 9-Oct 33894 9-Oct 33895 9-Oct 33896 9-Oct 33897 9-Oct 33898 9-Oct 33899 9-Oct 33900 9-Oct 33901 9-Oct 33902 9-Sep 33903 9-Sep 33904 9-Sep 33905 9-Sep 33906 9-Sep 33907 9-Sep 33908 9-Sep 33909 9-Sep 33910 9-Sep 33911 9-Sep 33912 9-Sep 33913 9-Sep 33914 9-Sep 33915 9-Sep 33916 9-Sep 33917 9-Sep 33918 9-Sep 33919 9-Sep 33920 9-Sep 33921 9-Sep 33922 9-Sep 33923 9-Sep 33924 9-Sep 33925 9-Sep 33926 9-Sep 33927 9-Sep 33928 9-Sep 33929 9-Sep 33930 9-Sep 33931 9-Sep 33932 9-Sep 33933 9-Sep 33934 9-Sep 33935 9-Sep 33936 9-Sep 33937 9-Sep 33938 9-Sep 33939 9-Sep 33940 9-Sep 33941 9-Sep 33942 9-Sep 33943 9-Sep 33944 9-Sep 33945 9-Sep 33946 9-Sep 33947 9-Sep 33948 9-Sep 33949 9-Sep 33950 9-Sep 33951 9-Sep 33952 9-Sep 33953 9-Sep 33954 9-Sep 33955 9-Sep 33956 9-Sep 33957 9-Sep 33958 9-Sep 33959 9-Sep 33960 9-Sep 33961 9-Sep 33962 9-Sep 33963 9-Sep 33964 9-Sep 33965 9-Sep 33966 9-Sep 33967 9-Sep 33968 9-Sep 33969 9-Sep 33970 9-Sep 33971 9-Sep 33972 9-Sep 33973 9-Sep 33974 9-Sep 33975 9-Sep 33976 9-Sep 33977 9-Sep 33978 9-Sep 33979 9-Sep 33980 9-Sep 33981 9-Sep 33982 9-Sep 33983 9-Sep 33984 9-Sep 33985 9-Sep 33986 9-Sep 33987 9-Sep 33988 9-Sep 33989 9-Sep 33990 9-Sep 33991 9-Sep 33992 9-Sep 33993 9-Sep 33994 9-Sep 33995 9-Sep 33996 9-Sep 33997 9-Sep 33998 9-Sep 33999 9-Sep 34000 9-Sep 34001 9-Sep 34002 9-Sep 34003 9-Sep 34004 9-Sep 34005 9-Sep 34006 9-Sep 34007 9-Sep 34008 9-Sep 34009 9-Sep 34010 9-Sep 34011 9-Sep 34012 9-Sep 34013 9-Sep 34014 9-Sep 34015 9-Sep 34016 9-Sep 34017 Apr-00 34018 Apr-00 34019 Apr-00 34020 Apr-00 34021 Apr-00 34022 Apr-00 34023 Apr-00 34024 Apr-00 34025 Apr-00 34026 Apr-00 34027 Apr-00 34028 Apr-00 34029 Apr-00 34030 Apr-00 34031 Apr-00 34032 Apr-00 34033 Apr-00 34034 Apr-00 34035 Apr-00 34036 Apr-00 34037 Apr-00 34038 Apr-00 34039 Apr-00 34040 Apr-00 34041 Apr-00 34042 Apr-00 34043 Apr-00 34044 Apr-00 34045 Apr-00 34046 Apr-00 34047 Apr-00 34048 Apr-00 34049 Apr-00 34050 Apr-00 34051 Apr-00 34052 Apr-00 34053 Apr-00 34054 Apr-00 34055 Apr-00 34056 Apr-00 34057 Apr-00 34058 Apr-00 34059 Apr-00 34060 Apr-00 34061 Apr-00 34062 Apr-00 34063 Apr-00 34064 Apr-00 34065 Apr-00 34066 Apr-00 34067 Apr-00 34068 Apr-00 34069 Apr-00 34070 Apr-00 34071 Apr-00 34072 Apr-00 34073 Apr-00 34074 Apr-00 34075 Apr-00 34076 Apr-00 34077 Apr-00 34078 Apr-00 34079 Apr-00 34080 Apr-00 34081 Apr-00 34082 Apr-00 34083 Apr-00 34084 Apr-00 34085 Apr-00 34086 Apr-00 34087 Apr-00 34088 Apr-00 34089 Apr-00 34090 Apr-00 34091 Apr-00 34092 Apr-00 34093 Apr-00 34094 Apr-00 34095 Apr-00 34096 Apr-00 34097 Apr-00 34098 Apr-00 34099 Apr-00 34100 Apr-00 34101 Apr-00 34102 Apr-00 34103 Apr-00 34104 Apr-00 34105 Apr-00 34106 Apr-00 34107 Apr-00 34108 Apr-00 34109 Apr-00 34110 Apr-00 34111 Apr-00 34112 Apr-00 34113 Apr-00 34114 Apr-00 34115 Apr-00 34116 Apr-00 34117 Apr-00 34118 Apr-00 34119 Apr-00 34120 Apr-00 34121 Apr-00 34122 Apr-00 34123 Apr-00 34124 Apr-00 34125 Apr-00 34126 Apr-00 34127 Apr-00 34128 Apr-00 34129 Apr-00 34130 Apr-00 34131 Apr-00 34132 Apr-00 34133 Apr-00 34134 Apr-00 34135 Apr-00 34136 Apr-00 34137 Apr-00 34138 Apr-00 34139 Apr-00 34140 Apr-00 34141 Apr-00 34142 Apr-00 34143 Apr-00 34144 Apr-00 34145 Apr-00 34146 Apr-00 34147 Apr-00 34148 Apr-00 34149 Apr-00 34150 Apr-00 34151 Apr-00 34152 Apr-00 34153 Apr-00 34154 Apr-00 34155 Apr-00 34156 Apr-00 34157 Apr-00 34158 Apr-00 34159 Apr-00 34160 Apr-00 34161 Apr-00 34162 Apr-00 34163 Apr-00 34164 Apr-00 34165 Apr-00 34166 Apr-00 34167 Apr-00 34168 Apr-00 34169 Apr-00 34170 Apr-00 34171 Apr-00 34172 Apr-00 34173 Apr-00 34174 Apr-00 34175 Apr-00 34176 Apr-00 34177 Apr-00 34178 Apr-00 34179 Apr-00 34180 Apr-00 34181 Apr-00 34182 Apr-00 34183 Apr-00 34184 Apr-00 34185 Apr-00 34186 Apr-00 34187 Apr-00 34188 Apr-00 34189 Apr-00 34190 Apr-00 34191 Apr-00 34192 Apr-00 34193 Apr-00 34194 Apr-00 34195 Apr-00 34196 Apr-00 34197 Apr-00 34198 Apr-00 34199 Apr-00 34200 Apr-00 34201 Apr-00 34202 Apr-00 34203 Apr-00 34204 Apr-00 34205 Apr-00 34206 Apr-00 34207 Apr-00 34208 Apr-00 34209 Apr-00 34210 Apr-00 34211 Apr-00 34212 Apr-00 34213 Apr-00 34214 Apr-00 34215 Apr-00 34216 Apr-00 34217 Apr-00 34218 Apr-00 34219 Apr-00 34220 Apr-00 34221 Apr-00 34222 Apr-00 34223 Apr-00 34224 Apr-00 34225 Apr-00 34226 Apr-00 34227 Apr-00 34228 Apr-00 34229 Apr-00 34230 Apr-00 34231 Apr-00 34232 Apr-00 34233 Apr-00 34234 Apr-00 34235 Apr-00 34236 Apr-00 34237 Apr-00 34238 Apr-00 34239 Apr-00 34240 Apr-00 34241 Apr-00 34242 Apr-00 34243 Apr-00 34244 Apr-00 34245 Apr-00 34246 Apr-00 34247 Apr-00 34248 Apr-00 34249 Apr-00 34250 Apr-00 34251 Apr-00 34252 Apr-00 34253 Apr-00 34254 Apr-00 34255 Apr-00 34256 Apr-00 34257 Apr-00 34258 Apr-00 34259 Apr-00 34260 Apr-00 34261 Apr-00 34262 Apr-00 34263 Apr-00 34264 Apr-00 34265 Apr-00 34266 Apr-00 34267 Apr-00 34268 Apr-00 34269 Apr-00 34270 Apr-00 34271 Apr-00 34272 Apr-00 34273 Apr-00 34274 Apr-00 34275 Apr-00 34276 Apr-00 34277 Apr-00 34278 Apr-00 34279 Apr-00 34280 Apr-00 34281 Apr-00 34282 Apr-00 34283 Apr-00 34284 Apr-00 34285 Apr-00 34286 Apr-00 34287 Apr-00 34288 Apr-00 34289 Apr-00 34290 Apr-00 34291 Apr-00 34292 Apr-00 34293 Apr-00 34294 Apr-00 34295 Apr-00 34296 Apr-00 34297 Apr-00 34298 Apr-00 34299 Apr-00 34300 Apr-00 34301 Apr-00 34302 Apr-00 34303 Apr-00 34304 Apr-00 34305 Apr-00 34306 Apr-00 34307 Apr-00 34308 Apr-00 34309 Apr-00 34310 Apr-00 34311 Apr-00 34312 Apr-00 34313 Apr-00 34314 Apr-00 34315 Apr-00 34316 Apr-00 34317 Apr-00 34318 Apr-00 34319 Apr-00 34320 Apr-00 34321 Apr-00 34322 Apr-00 34323 Apr-00 34324 Apr-00 34325 Apr-00 34326 Apr-00 34327 Apr-00 34328 Apr-00 34329 Apr-00 34330 Apr-00 34331 Apr-00 34332 Apr-00 34333 Apr-00 34334 Apr-00 34335 Apr-00 34336 Apr-00 34337 Apr-00 34338 Apr-00 34339 Apr-00 34340 Apr-00 34341 Apr-00 34342 Apr-00 34343 Apr-00 34344 Apr-00 34345 Apr-00 34346 Apr-00 34347 Apr-00 34348 Apr-58 34349 Apr-62 34350 Apr-63 34351 Apr-63 34352 Apr-64 34353 Apr-64 34354 Apr-65 34355 Apr-65 34356 Apr-65 34357 Apr-66 34358 Apr-66 34359 Apr-66 34360 Apr-66 34361 Apr-67 34362 Apr-67 34363 Apr-67 34364 Apr-67 34365 Apr-67 34366 Apr-67 34367 Apr-67 34368 Apr-68 34369 Apr-68 34370 Apr-68 34371 Apr-68 34372 Apr-69 34373 Apr-69 34374 Apr-69 34375 Apr-69 34376 Apr-70 34377 Apr-70 34378 Apr-70 34379 Apr-70 34380 Apr-70 34381 Apr-70 34382 Apr-71 34383 Apr-71 34384 Apr-71 34385 Apr-71 34386 Apr-71 34387 Apr-71 34388 Apr-71 34389 Apr-71 34390 Apr-72 34391 Apr-72 34392 Apr-72 34393 Apr-72 34394 Apr-72 34395 Apr-72 34396 Apr-72 34397 Apr-72 34398 Apr-72 34399 Apr-72 34400 Apr-72 34401 Apr-72 34402 Apr-72 34403 Apr-72 34404 Apr-72 34405 Apr-73 34406 Apr-73 34407 Apr-73 34408 Apr-73 34409 Apr-73 34410 Apr-73 34411 Apr-73 34412 Apr-74 34413 Apr-74 34414 Apr-74 34415 Apr-74 34416 Apr-74 34417 Apr-74 34418 Apr-74 34419 Apr-74 34420 Apr-74 34421 Apr-74 34422 Apr-74 34423 Apr-74 34424 Apr-75 34425 Apr-75 34426 Apr-75 34427 Apr-75 34428 Apr-75 34429 Apr-75 34430 Apr-75 34431 Apr-75 34432 Apr-75 34433 Apr-75 34434 Apr-75 34435 Apr-75 34436 Apr-75 34437 Apr-75 34438 Apr-76 34439 Apr-76 34440 Apr-76 34441 Apr-76 34442 Apr-76 34443 Apr-76 34444 Apr-76 34445 Apr-76 34446 Apr-76 34447 Apr-76 34448 Apr-76 34449 Apr-76 34450 Apr-76 34451 Apr-76 34452 Apr-76 34453 Apr-76 34454 Apr-76 34455 Apr-76 34456 Apr-76 34457 Apr-76 34458 Apr-76 34459 Apr-76 34460 Apr-77 34461 Apr-77 34462 Apr-77 34463 Apr-77 34464 Apr-77 34465 Apr-77 34466 Apr-77 34467 Apr-77 34468 Apr-77 34469 Apr-77 34470 Apr-77 34471 Apr-77 34472 Apr-77 34473 Apr-77 34474 Apr-77 34475 Apr-77 34476 Apr-77 34477 Apr-77 34478 Apr-77 34479 Apr-77 34480 Apr-77 34481 Apr-77 34482 Apr-77 34483 Apr-77 34484 Apr-78 34485 Apr-78 34486 Apr-78 34487 Apr-78 34488 Apr-78 34489 Apr-78 34490 Apr-78 34491 Apr-78 34492 Apr-78 34493 Apr-78 34494 Apr-78 34495 Apr-78 34496 Apr-78 34497 Apr-78 34498 Apr-78 34499 Apr-78 34500 Apr-78 34501 Apr-78 34502 Apr-78 34503 Apr-78 34504 Apr-79 34505 Apr-79 34506 Apr-79 34507 Apr-79 34508 Apr-79 34509 Apr-79 34510 Apr-79 34511 Apr-79 34512 Apr-79 34513 Apr-79 34514 Apr-79 34515 Apr-79 34516 Apr-79 34517 Apr-79 34518 Apr-79 34519 Apr-79 34520 Apr-79 34521 Apr-79 34522 Apr-79 34523 Apr-79 34524 Apr-79 34525 Apr-79 34526 Apr-79 34527 Apr-79 34528 Apr-79 34529 Apr-79 34530 Apr-79 34531 Apr-79 34532 Apr-79 34533 Apr-79 34534 Apr-79 34535 Apr-79 34536 Apr-79 34537 Apr-79 34538 Apr-79 34539 Apr-79 34540 Apr-79 34541 Apr-80 34542 Apr-80 34543 Apr-80 34544 Apr-80 34545 Apr-80 34546 Apr-80 34547 Apr-80 34548 Apr-80 34549 Apr-80 34550 Apr-80 34551 Apr-80 34552 Apr-80 34553 Apr-80 34554 Apr-80 34555 Apr-80 34556 Apr-80 34557 Apr-80 34558 Apr-80 34559 Apr-80 34560 Apr-80 34561 Apr-80 34562 Apr-80 34563 Apr-81 34564 Apr-81 34565 Apr-81 34566 Apr-81 34567 Apr-81 34568 Apr-81 34569 Apr-81 34570 Apr-81 34571 Apr-81 34572 Apr-81 34573 Apr-81 34574 Apr-81 34575 Apr-81 34576 Apr-81 34577 Apr-81 34578 Apr-81 34579 Apr-81 34580 Apr-81 34581 Apr-81 34582 Apr-81 34583 Apr-81 34584 Apr-81 34585 Apr-81 34586 Apr-81 34587 Apr-81 34588 Apr-81 34589 Apr-81 34590 Apr-81 34591 Apr-81 34592 Apr-81 34593 Apr-81 34594 Apr-81 34595 Apr-81 34596 Apr-81 34597 Apr-81 34598 Apr-81 34599 Apr-81 34600 Apr-81 34601 Apr-81 34602 Apr-81 34603 Apr-81 34604 Apr-81 34605 Apr-82 34606 Apr-82 34607 Apr-82 34608 Apr-82 34609 Apr-82 34610 Apr-82 34611 Apr-82 34612 Apr-82 34613 Apr-82 34614 Apr-82 34615 Apr-82 34616 Apr-82 34617 Apr-82 34618 Apr-82 34619 Apr-82 34620 Apr-82 34621 Apr-82 34622 Apr-82 34623 Apr-82 34624 Apr-82 34625 Apr-82 34626 Apr-82 34627 Apr-82 34628 Apr-82 34629 Apr-82 34630 Apr-82 34631 Apr-82 34632 Apr-82 34633 Apr-82 34634 Apr-82 34635 Apr-82 34636 Apr-82 34637 Apr-82 34638 Apr-82 34639 Apr-82 34640 Apr-82 34641 Apr-82 34642 Apr-82 34643 Apr-82 34644 Apr-83 34645 Apr-83 34646 Apr-83 34647 Apr-83 34648 Apr-83 34649 Apr-83 34650 Apr-83 34651 Apr-83 34652 Apr-83 34653 Apr-83 34654 Apr-83 34655 Apr-83 34656 Apr-83 34657 Apr-83 34658 Apr-83 34659 Apr-83 34660 Apr-83 34661 Apr-83 34662 Apr-83 34663 Apr-83 34664 Apr-83 34665 Apr-83 34666 Apr-83 34667 Apr-83 34668 Apr-83 34669 Apr-83 34670 Apr-83 34671 Apr-83 34672 Apr-83 34673 Apr-83 34674 Apr-83 34675 Apr-83 34676 Apr-83 34677 Apr-83 34678 Apr-83 34679 Apr-83 34680 Apr-83 34681 Apr-83 34682 Apr-83 34683 Apr-83 34684 Apr-83 34685 Apr-83 34686 Apr-83 34687 Apr-83 34688 Apr-83 34689 Apr-83 34690 Apr-83 34691 Apr-83 34692 Apr-83 34693 Apr-83 34694 Apr-83 34695 Apr-83 34696 Apr-83 34697 Apr-83 34698 Apr-84 34699 Apr-84 34700 Apr-84 34701 Apr-84 34702 Apr-84 34703 Apr-84 34704 Apr-84 34705 Apr-84 34706 Apr-84 34707 Apr-84 34708 Apr-84 34709 Apr-84 34710 Apr-84 34711 Apr-84 34712 Apr-84 34713 Apr-84 34714 Apr-84 34715 Apr-84 34716 Apr-84 34717 Apr-84 34718 Apr-84 34719 Apr-84 34720 Apr-84 34721 Apr-84 34722 Apr-84 34723 Apr-84 34724 Apr-84 34725 Apr-84 34726 Apr-84 34727 Apr-84 34728 Apr-84 34729 Apr-84 34730 Apr-84 34731 Apr-84 34732 Apr-84 34733 Apr-84 34734 Apr-84 34735 Apr-84 34736 Apr-84 34737 Apr-84 34738 Apr-84 34739 Apr-84 34740 Apr-84 34741 Apr-84 34742 Apr-84 34743 Apr-84 34744 Apr-84 34745 Apr-84 34746 Apr-84 34747 Apr-84 34748 Apr-84 34749 Apr-84 34750 Apr-84 34751 Apr-84 34752 Apr-84 34753 Apr-84 34754 Apr-84 34755 Apr-84 34756 Apr-84 34757 Apr-84 34758 Apr-84 34759 Apr-84 34760 Apr-84 34761 Apr-84 34762 Apr-84 34763 Apr-84 34764 Apr-84 34765 Apr-84 34766 Apr-85 34767 Apr-85 34768 Apr-85 34769 Apr-85 34770 Apr-85 34771 Apr-85 34772 Apr-85 34773 Apr-85 34774 Apr-85 34775 Apr-85 34776 Apr-85 34777 Apr-85 34778 Apr-85 34779 Apr-85 34780 Apr-85 34781 Apr-85 34782 Apr-85 34783 Apr-85 34784 Apr-85 34785 Apr-85 34786 Apr-85 34787 Apr-85 34788 Apr-85 34789 Apr-85 34790 Apr-85 34791 Apr-85 34792 Apr-85 34793 Apr-85 34794 Apr-85 34795 Apr-85 34796 Apr-85 34797 Apr-85 34798 Apr-85 34799 Apr-85 34800 Apr-85 34801 Apr-85 34802 Apr-85 34803 Apr-85 34804 Apr-85 34805 Apr-85 34806 Apr-85 34807 Apr-85 34808 Apr-85 34809 Apr-85 34810 Apr-85 34811 Apr-85 34812 Apr-85 34813 Apr-85 34814 Apr-85 34815 Apr-85 34816 Apr-85 34817 Apr-85 34818 Apr-85 34819 Apr-85 34820 Apr-85 34821 Apr-85 34822 Apr-85 34823 Apr-85 34824 Apr-85 34825 Apr-85 34826 Apr-85 34827 Apr-85 34828 Apr-85 34829 Apr-85 34830 Apr-85 34831 Apr-86 34832 Apr-86 34833 Apr-86 34834 Apr-86 34835 Apr-86 34836 Apr-86 34837 Apr-86 34838 Apr-86 34839 Apr-86 34840 Apr-86 34841 Apr-86 34842 Apr-86 34843 Apr-86 34844 Apr-86 34845 Apr-86 34846 Apr-86 34847 Apr-86 34848 Apr-86 34849 Apr-86 34850 Apr-86 34851 Apr-86 34852 Apr-86 34853 Apr-86 34854 Apr-86 34855 Apr-86 34856 Apr-86 34857 Apr-86 34858 Apr-86 34859 Apr-86 34860 Apr-86 34861 Apr-86 34862 Apr-86 34863 Apr-86 34864 Apr-86 34865 Apr-86 34866 Apr-86 34867 Apr-86 34868 Apr-86 34869 Apr-86 34870 Apr-86 34871 Apr-86 34872 Apr-86 34873 Apr-86 34874 Apr-86 34875 Apr-86 34876 Apr-86 34877 Apr-86 34878 Apr-86 34879 Apr-86 34880 Apr-86 34881 Apr-86 34882 Apr-86 34883 Apr-86 34884 Apr-86 34885 Apr-86 34886 Apr-86 34887 Apr-86 34888 Apr-86 34889 Apr-86 34890 Apr-86 34891 Apr-86 34892 Apr-86 34893 Apr-86 34894 Apr-86 34895 Apr-86 34896 Apr-86 34897 Apr-86 34898 Apr-86 34899 Apr-86 34900 Apr-86 34901 Apr-86 34902 Apr-86 34903 Apr-86 34904 Apr-86 34905 Apr-86 34906 Apr-86 34907 Apr-86 34908 Apr-86 34909 Apr-86 34910 Apr-86 34911 Apr-86 34912 Apr-86 34913 Apr-86 34914 Apr-86 34915 Apr-86 34916 Apr-86 34917 Apr-86 34918 Apr-86 34919 Apr-86 34920 Apr-86 34921 Apr-86 34922 Apr-86 34923 Apr-86 34924 Apr-86 34925 Apr-86 34926 Apr-86 34927 Apr-86 34928 Apr-86 34929 Apr-86 34930 Apr-86 34931 Apr-86 34932 Apr-87 34933 Apr-87 34934 Apr-87 34935 Apr-87 34936 Apr-87 34937 Apr-87 34938 Apr-87 34939 Apr-87 34940 Apr-87 34941 Apr-87 34942 Apr-87 34943 Apr-87 34944 Apr-87 34945 Apr-87 34946 Apr-87 34947 Apr-87 34948 Apr-87 34949 Apr-87 34950 Apr-87 34951 Apr-87 34952 Apr-87 34953 Apr-87 34954 Apr-87 34955 Apr-87 34956 Apr-87 34957 Apr-87 34958 Apr-87 34959 Apr-87 34960 Apr-87 34961 Apr-87 34962 Apr-87 34963 Apr-87 34964 Apr-87 34965 Apr-87 34966 Apr-87 34967 Apr-87 34968 Apr-87 34969 Apr-87 34970 Apr-87 34971 Apr-87 34972 Apr-87 34973 Apr-87 34974 Apr-87 34975 Apr-87 34976 Apr-87 34977 Apr-87 34978 Apr-87 34979 Apr-87 34980 Apr-87 34981 Apr-87 34982 Apr-87 34983 Apr-87 34984 Apr-87 34985 Apr-87 34986 Apr-87 34987 Apr-87 34988 Apr-87 34989 Apr-87 34990 Apr-87 34991 Apr-87 34992 Apr-87 34993 Apr-87 34994 Apr-87 34995 Apr-87 34996 Apr-87 34997 Apr-87 34998 Apr-87 34999 Apr-87 Name: Credit_Earliest_MonYY, dtype: object
From the above, you can see that there's a difference of datatype for Credit_Earliest_MonYY.
# credit_earliest date
test["Credit_Earliest_MonYY"][:34017] = test["Credit_Earliest_MonYY"][:34017].apply(
lambda x: datetime.strptime(str(x + "-22"), "%d-%b-%y"))
test["Credit_Earliest_MonYY"][34017:] = test["Credit_Earliest_MonYY"][34017:].apply(
lambda x: datetime.strptime(str(x), "%b-%y"))
test['credit_earliest_month'] = pd.to_datetime(test['Credit_Earliest_MonYY']).dt.month
test['credit_earliest_year'] = pd.to_datetime(test['Credit_Earliest_MonYY']).dt.year
test['credit_earliest_year'] = test['credit_earliest_year'].apply(lambda x: str(x)[-2:]).astype("int")
# issued_date
test['issued_month'] = test['Issued_MonYY'].apply(lambda x: str(x)[-3:])
test['issued_year'] = test['Issued_MonYY'].apply(lambda x: str(x)[:2])
test['issued_month'] = test['issued_month'].apply(lambda x: month(x))
test['issued_year'] = test['issued_year'].apply(lambda x: year(x))
test['issued_year'] = test['issued_year'].apply(lambda x: str(x)[-2:]).astype("int")
test=test.drop(columns = ["Credit_Earliest_MonYY","Issued_MonYY","index"])
test.head()
| Loan_Requested | Loan_Grade | Years_Employed | Home_Ownership | Annual_Income | Verification | loan_Cat | State | Debit_Payment_Ratio | Delinquency_Frequency | Inquiries_Count | Open_Credit_Line_Count | Derogatory_Public_Record_Count | Total_Credit | Credit_Utilization_Rate | Total_Credit_Line_Count | Initial_Status | pay_36months | credit_earliest_month | credit_earliest_year | issued_month | issued_year | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 30000 | C | 10 | MORTGAGE | 150000.0 | verified | debt_consolidation | MD | 14.24 | 0 | 1 | 17 | 0 | 20383 | 87.50% | 34 | w | 0 | 4 | 22 | 2 | 15 |
| 1 | 12000 | A | 5-9 | MORTGAGE | 105000.0 | not verified | credit_card | HI | 8.53 | 1 | 0 | 8 | 0 | 30372 | 58% | 28 | f | 0 | 4 | 22 | 2 | 15 |
| 2 | 20000 | B | 10 | MORTGAGE | 85000.0 | verified | debt_consolidation | MA | 17.52 | 0 | 0 | 7 | 0 | 18035 | 87.50% | 18 | w | 0 | 4 | 22 | 2 | 15 |
| 3 | 9000 | A | 10 | MORTGAGE | 56000.0 | verified | debt_consolidation | CA | 6.24 | 2 | 0 | 11 | 0 | 5547 | 55.50% | 16 | w | 0 | 4 | 22 | 2 | 15 |
| 4 | 11000 | B | 5-9 | RENT | 80000.0 | not verified | debt_consolidation | CA | 17.16 | 6 | 0 | 13 | 0 | 2651 | 39% | 33 | f | 0 | 4 | 22 | 1 | 15 |
test.isna().sum()
Loan_Requested 0 Loan_Grade 0 Years_Employed 0 Home_Ownership 0 Annual_Income 0 Verification 0 loan_Cat 0 State 0 Debit_Payment_Ratio 0 Delinquency_Frequency 0 Inquiries_Count 0 Open_Credit_Line_Count 0 Derogatory_Public_Record_Count 0 Total_Credit 0 Credit_Utilization_Rate 30 Total_Credit_Line_Count 0 Initial_Status 0 pay_36months 0 credit_earliest_month 0 credit_earliest_year 0 issued_month 0 issued_year 0 dtype: int64
#change State to Region
test["Region"] = test["State"].map(states)
test = test.drop("State", axis=1)
# change Delinquency_Frequency to has_delinquency
test['has_delinquency'] = test['Delinquency_Frequency'].apply(lambda x: 1 if x != 0 else 0)
test['has_delinquency']=test['has_delinquency'].astype("category")
test = test.drop(columns = ['Delinquency_Frequency'])
# change Open_Credit_Line_Count to log_Open_Credit_Line_Count
test['log_Open_Credit_Line_Count'] = np.log10(test['Open_Credit_Line_Count'])
test['log_Open_Credit_Line_Count'] .replace([-np.inf], 0, inplace = True)
test=test.drop("Open_Credit_Line_Count", axis=1)
#Derogatory_Public_Record_Count
test['has_derogatory'] = test['Derogatory_Public_Record_Count'].apply(lambda x: 1 if x != 0 else 0)
test['has_derogatory']=test['has_derogatory'].astype("category")
test = test.drop(columns = ['Derogatory_Public_Record_Count'])
# Credit_Utilization_Rate
test['Credit_Utilization_Rate'] = test['Credit_Utilization_Rate'].str.replace("%","")
test['Credit_Utilization_Rate']= pd.to_numeric(test['Credit_Utilization_Rate'])
test_mean_value=test['Credit_Utilization_Rate'].mean()
test.loc['Credit_Utilization_Rate']=test['Credit_Utilization_Rate'].fillna(value=test_mean_value, inplace=True)
# Total_Credit_Line_Count
#test = test[test['Total_Credit_Line_Count'] <= 53]
test.isna().sum()
Loan_Requested 1 Loan_Grade 1 Years_Employed 1 Home_Ownership 1 Annual_Income 1 Verification 1 loan_Cat 1 Debit_Payment_Ratio 1 Inquiries_Count 1 Total_Credit 1 Credit_Utilization_Rate 1 Total_Credit_Line_Count 1 Initial_Status 1 pay_36months 1 credit_earliest_month 1 credit_earliest_year 1 issued_month 1 issued_year 1 Region 1 has_delinquency 1 log_Open_Credit_Line_Count 1 has_derogatory 1 dtype: int64
test.info()
<class 'pandas.core.frame.DataFrame'> Index: 80001 entries, 0 to Credit_Utilization_Rate Data columns (total 22 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Loan_Requested 80000 non-null float64 1 Loan_Grade 80000 non-null object 2 Years_Employed 80000 non-null object 3 Home_Ownership 80000 non-null object 4 Annual_Income 80000 non-null float64 5 Verification 80000 non-null object 6 loan_Cat 80000 non-null object 7 Debit_Payment_Ratio 80000 non-null float64 8 Inquiries_Count 80000 non-null float64 9 Total_Credit 80000 non-null float64 10 Credit_Utilization_Rate 80000 non-null float64 11 Total_Credit_Line_Count 80000 non-null float64 12 Initial_Status 80000 non-null object 13 pay_36months 80000 non-null float64 14 credit_earliest_month 80000 non-null float64 15 credit_earliest_year 80000 non-null float64 16 issued_month 80000 non-null float64 17 issued_year 80000 non-null float64 18 Region 80000 non-null object 19 has_delinquency 80000 non-null float64 20 log_Open_Credit_Line_Count 80000 non-null float64 21 has_derogatory 80000 non-null float64 dtypes: float64(15), object(7) memory usage: 14.0+ MB
# Get one-hot encoding
test = pd.get_dummies(test, drop_first=True)
test.head()
| Loan_Requested | Annual_Income | Debit_Payment_Ratio | Inquiries_Count | Total_Credit | Credit_Utilization_Rate | Total_Credit_Line_Count | pay_36months | credit_earliest_month | credit_earliest_year | issued_month | issued_year | has_delinquency | log_Open_Credit_Line_Count | has_derogatory | Loan_Grade_B | Loan_Grade_C | Loan_Grade_D | Loan_Grade_E | Loan_Grade_F | Loan_Grade_G | Years_Employed_10 | Years_Employed_5-9 | Home_Ownership_OWN | Home_Ownership_RENT | Verification_verified | loan_Cat_credit_card | loan_Cat_debt_consolidation | loan_Cat_home_improvement | loan_Cat_house | loan_Cat_major_purchase | loan_Cat_medical | loan_Cat_moving | loan_Cat_other | loan_Cat_renewable_energy | loan_Cat_small_business | loan_Cat_vacation | loan_Cat_wedding | Initial_Status_w | Region_Northeast | Region_Other | Region_South | Region_West | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 30000.0 | 150000.0 | 14.24 | 1.0 | 20383.0 | 87.5 | 34.0 | 0.0 | 4.0 | 22.0 | 2.0 | 15.0 | 0.0 | 1.230449 | 0.0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 1 | 12000.0 | 105000.0 | 8.53 | 0.0 | 30372.0 | 58.0 | 28.0 | 0.0 | 4.0 | 22.0 | 2.0 | 15.0 | 1.0 | 0.903090 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 2 | 20000.0 | 85000.0 | 17.52 | 0.0 | 18035.0 | 87.5 | 18.0 | 0.0 | 4.0 | 22.0 | 2.0 | 15.0 | 0.0 | 0.845098 | 0.0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 3 | 9000.0 | 56000.0 | 6.24 | 0.0 | 5547.0 | 55.5 | 16.0 | 0.0 | 4.0 | 22.0 | 2.0 | 15.0 | 1.0 | 1.041393 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| 4 | 11000.0 | 80000.0 | 17.16 | 0.0 | 2651.0 | 39.0 | 33.0 | 0.0 | 4.0 | 22.0 | 1.0 | 15.0 | 1.0 | 1.113943 | 0.0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
test.info()
<class 'pandas.core.frame.DataFrame'> Index: 80001 entries, 0 to Credit_Utilization_Rate Data columns (total 43 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Loan_Requested 80000 non-null float64 1 Annual_Income 80000 non-null float64 2 Debit_Payment_Ratio 80000 non-null float64 3 Inquiries_Count 80000 non-null float64 4 Total_Credit 80000 non-null float64 5 Credit_Utilization_Rate 80000 non-null float64 6 Total_Credit_Line_Count 80000 non-null float64 7 pay_36months 80000 non-null float64 8 credit_earliest_month 80000 non-null float64 9 credit_earliest_year 80000 non-null float64 10 issued_month 80000 non-null float64 11 issued_year 80000 non-null float64 12 has_delinquency 80000 non-null float64 13 log_Open_Credit_Line_Count 80000 non-null float64 14 has_derogatory 80000 non-null float64 15 Loan_Grade_B 80001 non-null uint8 16 Loan_Grade_C 80001 non-null uint8 17 Loan_Grade_D 80001 non-null uint8 18 Loan_Grade_E 80001 non-null uint8 19 Loan_Grade_F 80001 non-null uint8 20 Loan_Grade_G 80001 non-null uint8 21 Years_Employed_10 80001 non-null uint8 22 Years_Employed_5-9 80001 non-null uint8 23 Home_Ownership_OWN 80001 non-null uint8 24 Home_Ownership_RENT 80001 non-null uint8 25 Verification_verified 80001 non-null uint8 26 loan_Cat_credit_card 80001 non-null uint8 27 loan_Cat_debt_consolidation 80001 non-null uint8 28 loan_Cat_home_improvement 80001 non-null uint8 29 loan_Cat_house 80001 non-null uint8 30 loan_Cat_major_purchase 80001 non-null uint8 31 loan_Cat_medical 80001 non-null uint8 32 loan_Cat_moving 80001 non-null uint8 33 loan_Cat_other 80001 non-null uint8 34 loan_Cat_renewable_energy 80001 non-null uint8 35 loan_Cat_small_business 80001 non-null uint8 36 loan_Cat_vacation 80001 non-null uint8 37 loan_Cat_wedding 80001 non-null uint8 38 Initial_Status_w 80001 non-null uint8 39 Region_Northeast 80001 non-null uint8 40 Region_Other 80001 non-null uint8 41 Region_South 80001 non-null uint8 42 Region_West 80001 non-null uint8 dtypes: float64(15), uint8(28) memory usage: 11.9+ MB
test[test.Loan_Requested.isnull()]
test = test.dropna(subset = ['Loan_Requested'],axis =0)
#check the columns difference
col1 = list(test.columns)
col2 = list(df.columns)
for c in df.columns:
if c not in test.columns:
print(c)
Interest_Rate Loan_Grade_Others Home_Ownership_OTHER loan_Cat_educational
# filling in the missing columns and fill in 0, 1 values according to the proportion in training set
test['Loan_Grade_Others'] = np.random.choice([0, 1], size=len(test), p=[0.85, 0.15])
test['Home_Ownership_OTHER'] = np.random.choice([0, 1], size=len(test), p=[0.84, 0.16])
test['loan_Cat_educational'] = np.random.choice([0, 1], size=len(test), p=[0.99, 0.01])
print(test.shape)
print(df.shape)
(80000, 46) (317178, 47)
df.columns
Index(['Interest_Rate', 'Loan_Requested', 'Annual_Income',
'Debit_Payment_Ratio', 'Inquiries_Count', 'Total_Credit',
'Credit_Utilization_Rate', 'Total_Credit_Line_Count', 'pay_36months',
'issued_month', 'issued_year', 'credit_earliest_month',
'credit_earliest_year', 'has_delinquency', 'log_Open_Credit_Line_Count',
'has_derogatory', 'Loan_Grade_B', 'Loan_Grade_C', 'Loan_Grade_D',
'Loan_Grade_E', 'Loan_Grade_F', 'Loan_Grade_G', 'Loan_Grade_Others',
'Years_Employed_10', 'Years_Employed_5-9', 'Home_Ownership_OTHER',
'Home_Ownership_OWN', 'Home_Ownership_RENT', 'Verification_verified',
'loan_Cat_credit_card', 'loan_Cat_debt_consolidation',
'loan_Cat_educational', 'loan_Cat_home_improvement', 'loan_Cat_house',
'loan_Cat_major_purchase', 'loan_Cat_medical', 'loan_Cat_moving',
'loan_Cat_other', 'loan_Cat_renewable_energy',
'loan_Cat_small_business', 'loan_Cat_vacation', 'loan_Cat_wedding',
'Initial_Status_w', 'Region_Northeast', 'Region_Other', 'Region_South',
'Region_West'],
dtype='object')
test.columns
Index(['Loan_Requested', 'Annual_Income', 'Debit_Payment_Ratio',
'Inquiries_Count', 'Total_Credit', 'Credit_Utilization_Rate',
'Total_Credit_Line_Count', 'pay_36months', 'credit_earliest_month',
'credit_earliest_year', 'issued_month', 'issued_year',
'has_delinquency', 'log_Open_Credit_Line_Count', 'has_derogatory',
'Loan_Grade_B', 'Loan_Grade_C', 'Loan_Grade_D', 'Loan_Grade_E',
'Loan_Grade_F', 'Loan_Grade_G', 'Years_Employed_10',
'Years_Employed_5-9', 'Home_Ownership_OWN', 'Home_Ownership_RENT',
'Verification_verified', 'loan_Cat_credit_card',
'loan_Cat_debt_consolidation', 'loan_Cat_home_improvement',
'loan_Cat_house', 'loan_Cat_major_purchase', 'loan_Cat_medical',
'loan_Cat_moving', 'loan_Cat_other', 'loan_Cat_renewable_energy',
'loan_Cat_small_business', 'loan_Cat_vacation', 'loan_Cat_wedding',
'Initial_Status_w', 'Region_Northeast', 'Region_Other', 'Region_South',
'Region_West', 'Loan_Grade_Others', 'Home_Ownership_OTHER',
'loan_Cat_educational'],
dtype='object')
col=['Loan_Requested', 'Annual_Income',
'Debit_Payment_Ratio', 'Inquiries_Count', 'Total_Credit',
'Credit_Utilization_Rate', 'Total_Credit_Line_Count', 'pay_36months',
'issued_month', 'issued_year', 'credit_earliest_month',
'credit_earliest_year', 'has_delinquency', 'log_Open_Credit_Line_Count',
'has_derogatory', 'Loan_Grade_B', 'Loan_Grade_C', 'Loan_Grade_D',
'Loan_Grade_E', 'Loan_Grade_F', 'Loan_Grade_G', 'Loan_Grade_Others',
'Years_Employed_10', 'Years_Employed_5-9', 'Home_Ownership_OTHER',
'Home_Ownership_OWN', 'Home_Ownership_RENT', 'Verification_verified',
'loan_Cat_credit_card', 'loan_Cat_debt_consolidation',
'loan_Cat_educational', 'loan_Cat_home_improvement', 'loan_Cat_house',
'loan_Cat_major_purchase', 'loan_Cat_medical', 'loan_Cat_moving',
'loan_Cat_other', 'loan_Cat_renewable_energy',
'loan_Cat_small_business', 'loan_Cat_vacation', 'loan_Cat_wedding',
'Initial_Status_w', 'Region_Northeast', 'Region_Other', 'Region_South',
'Region_West']
test = test[col]
test_pred = lr.predict(test)
test = pd.read_csv("Holdout for Testing.csv")
predict = pd.DataFrame(
{"Loan_Id": test["X2"], "Predicted_Interest_Rate": test_pred}
)
# "Titanic Results from" *insert your name or UChicago net ID.
predict.to_csv("Loan_Results_YichinTzou.csv", index=False)
From the above 4 machine learning models, we choose Linear regression model, since it performed without underfitting/overfitting problem, and has lowest RMSE comparing other 3 models. Yet, Since the linear regression has low RMSE=1.82, meaning that there's still a lot of progress can be done in the future,such as doing more work on parameter tuning. From the GB testing, we can know that there's underfitting situation, since the TRAIN RMSE~CV RMSE>TEST RMSE, which we will also work on in the furture. Also another big learning, always check the testing data you're handling, there might be other thing that you didn't handle in the previous step of cleaning.
Things I learned: